jquery验证器表单:如何在完成远程电子邮件验证后访问表单操作

2024-03-08

History:我之前开始这个问题这个线程 https://stackoverflow.com/questions/31966294/form-post-is-omitted-after-jquery-validation-is-completed。我花了一些时间试图让远程验证正常工作,所以我拒绝相信这就是导致我悲伤的原因。

Present:我正在使用 jQuery Validator,并且我已将 js 更新到版本 1.14.0。这个过程进展顺利。所有字段都经过检查和验证,我什至添加了一些额外的检查来帮助我识别问题:

invalidHandler and $("#submitBTN").click(),详述如下。

如果验证失败,这两个选项都会报告,并且该按钮还通过调用报告已通过验证$(form).valid();

我有一个远程验证,它正在验证电子邮件地址,检查它是否已在数据库中。这是工作。我使用帖子提交此请求。我应该使用替代技术吗?我这样说是因为验证后的表单帖子尚未提交。

我什至没有做到submitHandler但如果我注释掉远程检查我就可以访问submitHandler并处理表单操作。

我已审查过jQuery 远程验证 http://jqueryvalidation.org/remote-method/规则,但它的布局非常简单,所以我做错了什么?

这是我的 html 表单代码:

<form  id="signup_form" name="signup_form"  method="post" action="registration">  
  <h2>E-MAIL ADDRESS</h2>
  <input value="<?=$uEmail?>" type="text" name="signup_email" id="signup_email" /><br />

  <h2>PASSWORD</h2>
  <input type="password" name="requiredpWord" id="requiredpWord"><br />

  <h2>CONFIRM PASSWORD</h2>
  <input type="password" name="requiredcpWord" id="requiredcpWord"><br />

  <button id="submitBTN" type="submit" value="COMPLETE SIGNUP">COMPLETE SIGN UP</button>
</form>

这是我的 jQuery 验证(Note我混合使用console.log & alert用于调试):

$(function() {
    $("#signup_form").validate({
        rules: {
            signup_email: {
                email: true,
                required: true,
                remote: { 
                    type: 'post',
                    url: 'registration/isEmailAvailable',
                    data: {
                        email:
                            function() {
                                 // console.log(data);
                                return $( "#signup_email" ).val();
                            }
                    }
                }
            },
            requiredpWord: {
                required: true,
                minlength: 8
            },
            requiredcpWord: {
                equalTo: "#requiredpWord"
            }
        },
       messages: {
            signup_email: {
                required: "Please provide an email",
                email: "Please enter a valid email address"//,
            },
            requiredpWord: {
                required: "Please provide a password.",
                minlength: "Your password must be at least 8 characters long"
            },
            requiredcpWord: "Your passwords do not match."
        },
        invalidHandler: 
            function(form, validator) {
                var errors = validator.numberOfInvalids();
                if (errors) {
                    var message = errors == 1
                    ? 'Please correct the following error:\n'
                    : 'Please correct the following ' + errors + ' errors.\n';
                    var errors = "";
                    if (validator.errorList.length > 0) {
                        for (x=0;x<validator.errorList.length;x++) {
                            errors += "\n\u25CF " + validator.errorList[x].message;
                        }
                    }
                    console.log(message + errors);
                }
                validator.focusInvalid();
            },
        //added this to see if the form would post, did not change it
        submitHandler: 
            function(form) {
                alert("form submitted");
                // do other things for a valid form
                form.submit();
            }
    });
})

这是我的按钮 js 验证:

$( "#submitBTN" ).click(function() {
  alert( "Valid: " + $("#signup_form").valid() );
});

这是我的简单 php 验证脚本,在验证表单后我可以读取它:

var_dump($_POST);

启用远程部分的验证:

当我按下提交警报报告时:

Valid: true.

控制台报告电子邮件地址的验证帖子。没有发生任何其他事情,也没有报告任何其他事情。该页面保留在表单上。

禁用/注释掉远程部分的验证:

如果我完全注释掉远程验证部分:

我查看以下警报:

Valid: true&&form submitted

接下来是$_POST 的var_dump。这表明表单操作已完成。

任何关于如何让它发挥作用的建议将不胜感激?!

UPDATE

远程检查几乎返回以下内容:

if(!$userHandler->isEmailAvailable($email)){
    echo json_encode("Email Address is already registered: ".$email);
}else{
    echo false;
}
exit;

如果返回 true,则结果将变为错误消息 1。


您的服务器端代码应该看起来更像这样......

if (!$userHandler->isEmailAvailable($email)) {
    // failed validation
    echo json_encode("Email Address is already registered: " . $email); 
} else {
    // passed validation
    echo "true"; 
}
exit;

If a true返回结果变成错误消息,1.

那是因为true是一个布尔值 (1),并且插件需要一个字符串。字面上地,anything那不是一个"true"(字符串),被视为验证失败,并将给您一条错误消息:

  • 如果响应是"false", undefined, or null,然后您会收到一般错误消息。

  • 如果响应是"true",则您已通过验证并且不会显示任何消息。

  • 如果响应是其他内容,则该响应将成为错误消息字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery验证器表单:如何在完成远程电子邮件验证后访问表单操作 的相关文章

  • 在 jQuery Mobile 中将参数传递给 page-id

    我正在尝试将一些参数传递给 jQuery Mobile 中创建的页面 ID 该网站由带有链接的列表视图组成 每个列表视图中都有哈希编码 如下所示 li a href pronostico region 12 ciudad 0 Puerto
  • JavaScript 对输入的循环创建一个对象数组

    我正在尝试循环 div 中的输入元素 以创建对象数组 div div
  • 使用jquery tagit插件,是否有办法禁用所有条目?

    我有一个页面并且正在使用jquery tagit 插件 http aehlke github io tag it 效果很好 但我试图在单击按钮时禁用它 并使其具有与禁用选择下拉菜单时类似的行为 如下所示 selectDropdown val
  • 可拖动的非模态弹出窗口 Jquery Mobile

    我希望在 Jquery mobile 中有一个弹出窗口 它不会阻止用户与页面交互 并且 data dismissible false 即当页面的另一部分与页面的另一部分交互并保持可见时 弹出窗口不会消失 我已经尝试过这个 popupNew
  • jQuery自动完成插件-自定义突出显示功能

    我的每个项目的自动完成结果如下所示 h3 Celebrity Sweepstakes h3 p 0 episodes p 但我只想突出显示 H3 内的标题 请参阅下面的 突出显示 功能 我不知道如何更改原始正则表达式以仅替换标题内的内容 s
  • jQuery UI 选项卡 - 将选项卡绑定到同一页面上的链接

    我正在尝试将选项卡绑定到同一页面上的链接 但我是 jQuery 的新手 需要一些帮助 我的选项卡使用 jQuery UI 站点的代码 但是 如何绑定同一页面侧边栏中的链接呢
  • 如何在javascript中删除对象的一部分

    这是我的代码 var data btn click function total data push id total cell val1 val2 val3 每次用户点击btn按钮 我向数据对象添加一些值 现在我的问题是如何删除有的部分i
  • 如何在 iframe 加载时向页面添加加载指示器?

    我当前正在创建一个页面 单击链接后 iframe 将插入到 div 中并加载其内容 我使用以下 jQuery 调用来执行此操作 mydiv html 有时会加载源内容very慢慢地 结果看起来什么也没有发生 我希望在 iframe 内容加载
  • python:html 编写器?

    使用 jquery 可以很容易地使用选择器技术在另一个元素中插入一些元素 我想知道是否有任何 python 库可以做与 jquery 类似的事情 原因是我希望服务器端 python 程序生成静态页面 这需要解析 html 并向其中插入一些内
  • Foreach Ajax Json - Jquery

    谁能帮我 我有一个数组 stars Chris Pine Keira Knightley Kevin Costner 我想做的是 foreach star 我想将输入附加到 div 和 foreach star 它们在输入中具有值 这就是我
  • 粘表行

    我正在尝试实现一个像 iOS 那样的日历列表视图 基本上 我现在正在做的就是循环遍历我的事件数组 如果是新日期 则打印日期标题 否则打印日历事件 我想让日期标题行保持粘性 直到它们 滚动走 我怎样才能做到这一点 我看到很多关于粘性标题的示例
  • 如何将一个表单的文件上传字段中的值复制到另一个表单的文本字段?

    我有一页上有两种不同的表格 第一个表单允许用户上传图像文件并通过电子邮件发送 第二个表单根据用户输入生成 URL 为了将图像名称添加到 URL 我需要在第二个表单中有一个字段 该字段从第一个表单的字段中复制图像名称 我不想让用户浏览并选择图
  • 测试 jQuery UI 工具提示是否打开

    我正在尝试控制自动打开和关闭jQuery 工具提示 http api jqueryui com tooltip 如何测试工具提示的当前状态是否为打开 我正在使用所有内容的最新版本 Thanks 您可以尝试检查是否有任何课程ui toolti
  • 从 html5

    我正在寻找一种方法来根据用户代理字符串将控件属性添加到视频标签 我不希望在 iPad 和 Android 之外的任何浏览器或设备上出现控件属性 所以我认为用户代理是最好的识别方法 因为 ipad 和 android 一词出现在各自的 UA
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这
  • 如何在具有现有记录的 json 数据表顶部添加新行

    我试图在数据表顶部添加一行 显示 金额 列的总和 我正在使用 json 数据表 jquery 插件 列表来显示数据表 如何将此行与现有行一起添加到数据表顶部 我认为这段代码会对你有所帮助 var json uid user123 first
  • 什么是 TinyMCE jQuery 包?

    我被要求在项目中使用 TinyMCE 编辑器 在下载页面上 有一个主包 然后是一个 jQuery 包 This package contains special jQuery build of TinyMCE and a jQuery in
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • 这个 JQuery 指令做什么 $(function(){...}) [重复]

    这个问题在这里已经有答案了 我最近一直在研究JQuery 尽管我知道一些东西 但书上有这样一句话我根本无法理解 function current entry 1 有谁知道这条线是如何工作的以及它的作用是什么 它类似于 JQuery 函数中的
  • Javascript/jQuery 外部高度()

    Does idOfLememt outerHeight 对所有浏览器产生相同的结果 IE7 有什么不同吗 只要去http api jquery com outerHeight http api jquery com outerHeight

随机推荐