我有下一个jquery代码:
$("input").rules("add", {
required: true,
messages: {
required: 'Please enter your telephone number'
},
errorPlacement: function(error, element) {
console.log('bob');
element.insertBefore(error);
}
});
我正在尝试添加新规则,例如在此问题中回答:jquery validation & id's ft numbers
我有这样的HTML代码:
<form method='post' action='' id='#countersForm'>
<input id="88" class="counter_input active" type="text" enabled="">
<input id="89" class="counter_input active" type="text" enabled="">
</form>
我的问题是:
1)为什么浏览器会尝试验证加载页面上的字段?我不需要这个(消息bob在页面加载时出现。
2)为什么只有第一个输入字段在验证?我想验证所有字段。
3)为什么控制台说,该元素没有定义?
documentation表示元素参数包含经过验证的元素。 console.log(element)
说这是未定的。为什么呢?
答案 0 :(得分:1)
读取,添加和删除元素的规则。
它说&#39;&#39;元件。在您的情况下,$('input')
返回两个元素。
验证插件使用元素的name
属性,您的元素没有名称。
您必须使用validate()
方法在要验证的form
上初始化插件,例如
$("#myform").validate({ //where my form is the id of your form
rules: {
name: "required", //name is the name of your element
},
messages: {
}
});
答案 1 :(得分:1)
感谢您的回答和评论。
我解决了我的问题。工作代码(当前问题已解决)在这里:http://jsfiddle.net/2LRv7/2/
我的js代码中有一个很大的错误。我将errorPlacement
部分放到规则函数中。我必须将此选项添加到.validate
部分。
$("#countersForm").validate({
errorPlacement: function (error, element) {
console.log(error);
var br = $( "<br>" );
error.insertAfter(element);
br.insertAfter(element);
}
});
另外,正如@TilwinJoy所说,我使用$('input').rules(/*....*/)
错了。我不得不使用each
函数。
此代码没问题:
$("input").each(function () { // next code will affect all input fields
$(this).rules("add", { // $(this) is my input field
required: true,
digits: true,
messages: {
required: 'Это поле обязательно для заполнения',
digits: 'В поле могут быть только цифры'
}
});
});
目前的问题已经解决,但我有另一个问题。如果您想帮助查看此问题:Class is not being added to the error element on first check , but when field is being checked again all going ok (jquery validation plugin)