0

我正在使用 Benjamin Keen 的 RSV(真正简单的验证),但是我构建网站的方式我在页面底部有 javascript,这导致我正在验证的表单上出现可怕的内联 js 错误..

目前该表格有:

onSubmit="return RSV(this, rules);

我想把它改成这样:

registerForm.click(function(e){
    e.preventDefault();

    //alert("fired!");
    return RSV($(this), rules);

});

但是控制台报告了一个 Uncaught ReferenceError: rules is not defined

我宁愿不使用内联 javascript,有没有人遇到过这个或理解到足以提供帮助 - anyhelp 将不胜感激。

Benjamin 网站上验证码示例的链接

这是使插件工作所需的其余代码的示例。

$(document).ready(function() {
    $("#demo_form5").RSV({
      onCompleteHandler: myOnComplete,
      errorFieldClass: "errorFieldDemo5",
      displayType: "display-html",
      errorHTMLItemBullet: "— ",
            rules: [
                    "required,first_name,Please enter your first name.",
                    "required,last_name,Please enter your last name.",
                    "required,email,Please enter your email address.",
                    "valid_email,email,Please enter a valid email address.",
                    "required,any_integer,Please enter your age.",
                    "digits_only,any_integer,The age field may only contain digits.",
                    "required,marital_status,Please enter your marital status."
]
    });

});

4

2 回答 2

1

使用 prevent default 并不能真正按这里的预期工作。它可能在某些浏览器中工作,它也可能完全阻止表单提交,所以我会省略它。e.preventDefault();

正如您指出的那样,以下确实有效......

$('#btnSubmit').submit(function(){
    return RSV(this, rules);
});

...表单中的按钮需要是一个输入字段,类型为 submit 和匹配的 id,因为你有它:

<input type="submit" id="btnSubmit" >

我发现一些较旧的浏览器版本,例如 IE 8,偶尔会允许表单提交两次,从而在数据库中为您提供两条新记录。为确保不会发生这种情况,请将您的 myOnComplete 更改为:

function myOnComplete(){
      $(this).find("input[type='image'],input[type='submit']").click(function(){
        return false;
    });
}
于 2016-11-05T15:49:51.917 回答
0

我找到了解决方案:

我的目标是表单而不是提交按钮,并且在我应该使用 .submit() 的地方也使用了 .click()。

正确的代码如下:

    $('#btnSubmit').submit(function(e){
        e.preventDefault();
        return RSV(this, rules);
    })
于 2013-04-23T11:26:42.950 回答