2016-11-12 53 views
2

在我的项目中,我使用chosen下拉与Jquery validator。我在验证功能中添加了ignore: []。现在的问题是,选择了与jquery验证器显示错误与所选搜索文本框

验证与所选择的插件在调试

enter image description here

在我的网页验证搜索文本框,并显示以下错误,有3个选择的选择如下面的图像

enter image description here

上述ER中示出ROR是示出用于示出以下文本字段,它是由所选择的插件自动生成的,它不具有名称

enter image description here

其中我使用进行验证的示例代码是

function validateUserForm() { 
$('#user-master-form').validate({ 
    debug: true, 
    ignore: [], 
    rules: { 
     first_name: { 
      required: true, 
      minlength: 3, 
      maxlength: 100 
     }, 
     last_name: { 
      maxlength: 100 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
     mobile: { 
      required: true, 
      number: true, 
      maxlength: 15, 
      minlength: 10 
     }, 
     date_of_birth: { 
      required: true 
     }, 
     gender: { 
      required: true 
     }, 
     address: { 
      required: true, 
      maxlength: 200 
     }, 
     state: { 
      required: true 
     }, 
     district: { 
      required: true 
     } 
    }, 
    messages: { 
     first_name: { 
      required: "Please enter first name", 
      minlength: jQuery.validator.format("At least {0} characters required!"), 
      maxlength: jQuery.validator.format("Up to {0} characters allowed!") 
     }, 
     last_name: { 
      maxlength: jQuery.validator.format("Up to {0} characters allowed!") 
     }, 
     email: { 
      required: "Please enter email id", 
      email: 'Invalid email format', 
     }, 
     mobile: { 
      required: "Please enter mobile", 
      number: 'Only numbers allowed', 
      minlength: jQuery.validator.format("At least {0} numbers required!"), 
      maxlength: jQuery.validator.format("Up to {0} numbers allowed!") 
     }, 
     date_of_birth: { 
      required: "Please enter date of birth" 
     }, 
     gender: { 
      required: "Please select gender" 
     }, 
     address: { 
      required: "Please enter address", 
      maxlength: jQuery.validator.format("Up to {0} characters allowed!") 
     }, 
     state: { 
      required: "Please select state" 
     }, 
     district: { 
      required: "Please select district" 
     } 
    }, 
    errorPlacement: function (error, element) { 
     if (element.hasClass("chosen")) { 
      var id = element.attr('id'); 
      error.insertAfter("#" + id + "_chosen"); 
     } 
     else if (element.parent('.vd_radio').length) { 
      error.insertAfter(element.parent()); 
     } 
     else { 
      error.insertAfter(element); 
     } 
    } 
}); 
} 

请帮我摆脱这个问题。我困在这里。任何帮助可以理解

回答

1

首次定位:提供name属性为<输入>标签
其次修复:如果上述元素由插件生成的,这个地方"input[type=text&autocomplete=off]"中忽略的jQuery验证的领域。

+0

不可能的,因为它是由所选择的插件 – Arun

+0

@Arun创建:请尝试用sSecond修复,牢记你没有任何文本字段提供“=关闭自动完成” 。 –

1

正如您所说不可能通过插件添加名称,您可以使用.each()循环将名称添加到输入字段。这应该消除错误。如下面:

var names = ['name1', 'name2', 'name3']; 

$(document).ready(function() { 
    $.each('#idOrClass input', function(i) { 
     $(this).attr('name', names[i]); 
    }); 
}); 
+0

感谢您的建议。这是我已经想过的一个破解。但是有没有其他的办法呢? – Arun

+0

你可以使用':not'来隐藏消息,比如'ignore:'*:not([name])'' –