IE中的JQuery .validate()无法正常工作

时间:2014-12-18 21:38:21

标签: jquery validation internet-explorer

我有一个网站,可以在允许用户提交之前验证输入字段。一切都工作正常,直到我最近做了一个改变,打破了IE的网站。我将举例说明我的代码之前的样子。

$(document).ready(function() {

    $("#myFormId").formValidate();
    //other stuff

});

JQuery.fn.formValidate = function() {

    var myForm = this;

    $(myForm).validate({
      //validation code is here
    });

    $("#exampleInputField").rules("add", {
      required: true,
      alphaNumeric: true,
      minlength: 5,
      maxlength: 15
      });

    jQuery.validator.addMethod(
      "alphaNumeric",
      function(value, element) {
        return this.optional(element) || /^[a-z0-9]+$/i.test(value);
      },
      "Only alphanumeric characters are valid."
      );
}

我在文档就绪函数之外声明了我的验证函数,并在加载所有元素时在窗体上调用formValidate()。

此代码能够在IE和FF中完美运行。然后,我在代码中添加了一些用于保存表单的功能。对于保存的验证,我不希望有一个“必要的”#39;字段,但我仍想检查输入字段是否有有效输入。我保持验证功能相同,只在$(document).ready()函数中进行更改,如下所示:

$(document).ready(function() {

    $("#myFormId").formValidate();

    $("#saveButton").click(function() {
      $("#myFormId input").each(function() { $(this).rules('remove', 'required');});
      //This removes the 'required' field from each input's rule set, but still keeps the other rules
    });
    //other stuff

});

在此更改后,我的代码不再在IE中工作,但它在FF中工作正常。当我尝试在IE中保存时,在调试器打开时出现脚本错误,对SCRIPT438: Object doesn't support property or method 'rules'$(this).rules('remove', 'required');});。我甚至试图在控制台中调用$("#myForm").valid(),并且表示该表单不支持该属性或方法有效'或者'验证'。在我看来,验证没有被调用,或验证库没有正确加载,但我没有对此进行任何更改。有谁知道发生了什么?

更新:所以,当用户点击提交按钮时,我也设置了它,我通过使用$("#myFormId").formValidate();再次调用它来恢复原始验证。当他们点击提交按钮时,我再次收到警告,但似乎 按预期执行验证。所以,为了给出一个更好的主意,这就是它的样子:

$(document).ready(function() {

    $("#myFormId").formValidate();

    $("#saveButton").click(function() {
      $("#myFormId input").each(function() { $(this).rules('remove', 'required');});
      //This removes the 'required' field from each input's rule set, but still keeps the other rules
    });

    $("#submitButton").click(function() {
       $("#myFormId").formValidate(); //same as before, but debugger complains about 
                                      //this specifically
    });

    //other stuff

});

另一个更新:因此,每当我在document.ready函数中调用$("#myFormId").formValidate();时,我都没有从IE收到错误。但是,无论何时我从控制台或其他事件中调用它,它都表示表单不支持它。可以第二次调用它会导致错误吗?

0 个答案:

没有答案