我想验证我的表单,因为如果代码已经存在于列表中,我就无法输入代码。
<select id="form:choices_values" name="form:choices_values" multiple="true" class="ui-helper-hidden">
<option value="1" selected="selected">1</option>
</select>
Bellow是primefaces orderlist元素的html。
$.validator.addMethod('codExistss', function (value, element) {
var lstChoices = document.getElementById('form:choices_values');
for (i = 0; i < lstChoices.options.length; i++) {
return value === lstChoices.option[i].value;
}
}, "The code already exists.");
$(document).ready(function () {
$('#form').validate({
rules: {
'form:inptCode': {
codExistss: false
}
}
});
});
因此,列表包含值1.如果我在inputText中键入数字1,则应显示错误消息。
为了实现这一点,我添加了一个方法,当这个方法返回false时,我试图验证表单。 我没有太多使用jQuery验证的经验,实际上我只写了几个方法。
arcanist
似乎我的代码不起作用。那么,你能帮助我理解为什么吗?
答案 0 :(得分:0)
您对所有列表选项都有一个循环:
for (i = 0; i < lstChoices.options.length; i++) {
return value === lstChoices.option[i].value;
}
假设你有超过1个选项,那么只有一次条件会返回true并且你的验证被破坏了。
第二件事是您没有打开自定义函数的规则标志:
您有codExistss: false
表示“不通过此规则验证输入”,请将其更改为true。
试试这个:
$.validator.addMethod('codExistss', function (value, element) {
var lstChoices = document.getElementById('form:choices_values');
if(lstChoices.options[lstChoices.selectedIndex].value===value) {return false;}
return true;
},"The code already exists.");
$(document).ready(function () {
$('#form').validate({
rules: {
'form:inptCode': {
// Specify that form:inptCodeshould be validated
// by codExistss rule
codExistss: true
}
}
});
});