我正在尝试使用Jquery Validate插件,我能够弄清楚如何在静态字段中使用它。
我的问题是如何在动态表单上使用它。我创造了一个小提琴来讨论我的问题。希望你能耐心阅读这篇文章。小提琴链接是here
现在,这就是我想要做的,验证在每个文本框中输入的机器ID,并确保它是唯一的。假设您输入两次ABCD-123,系统应提醒您它不是唯一的。
希望有人能借此给我一个帮助。感谢
答案 0 :(得分:1)
首先 - 在写作时在你的代码中添加注释。
错误在这里:
var arrElements = $(".machineID");
arrElements
始终为空,没有machineID
类
你的每一个都不起作用。我重构了它http://jsfiddle.net/PaTJ4/
您的代码可能会使用更多修复程序,对于该任务来说有点过于复杂。但现在它有效。
祝你好运答案 1 :(得分:0)
我的版本有所改进 - 当检测到重复时,任何一个重复字段都应标记为无效,并且应该能够更改以解决问题。因此,您需要每次都重新验证所有其他字段(使用validator.element()
),但要避免递归(使用validator.validatingOthers
)。
为了完整性,我会在这里发布checkMachineIDs的代码:
function checkMachineIDs(element){
if($(element).val() != ""){
var arrElements = $("#machineList .machineID");
var $element = $(element);
var validator = $($element[0].form).validate();
if(arrElements.length > 1){
var valid = true;
arrElements.not('#'+$element.attr('id')).each(function() {
var current = $(this);
if (current.val() == $element.val())
valid = false;
});
if (!validator.validatingOthers) {
validator.validatingOthers = true;
arrElements.not('#'+$element.attr('id')).each(function() {
validator.element(this);
});
if (valid) validator.element($element);
validator.validatingOthers = false;
}
return valid;
}else{
return true;
}
}else{
return true;
}
}