我正在使用jquery验证,它适用于普通字段。我需要一种方法来确保在满足验证之前,一个列表框中至少有一个条目。我尝试添加自定义方法。
$.validator.addMethod('checklist', function(value, element) {
if ($("#currentimp").val() ==""){
return false;
} else return true;
}, "Listbox is empty");
然后在规则中我有以下内容:
currentimp: {
checklist:true
}
我不确定是否有更好的方法来实现这一目标,但我没有看到任何好的例子来说明我正在尝试做什么。我还将表单按钮更改为提交按钮,但除非我向submithandler添加提交功能,否则它不会提交。这是正常的吗?
答案 0 :(得分:1)
如果列表框是某种选择或广播,您只需使用required:true
规则,无需创建自己的自定义规则。
答案 1 :(得分:1)
引用OP :
“我需要一种方法来确保在满足验证之前,一个列表框中至少有一个条目。”
如果通过“listbox”,您的意思是<select multiple="multiple">
,那么您不需要编写自定义方法;您将使用required
规则。
验证select
的诀窍是,您的第一个<option>
必须包含value=""
。
<强> HTML 强>:
<select name="currentimp" id="currentimp" multiple="multiple">
<option value="">...</option>
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
</select>
<强>的jQuery 强>:
$(document).ready(function () {
$('#myform').validate({
rules: {
currentimp: {
required: true
}
}
});
});
DEMO:http://jsfiddle.net/5GKbF/
引用OP :
“我还将表单按钮更改为提交按钮,但除非我向submithandler添加提交功能,否则不会提交。这是正常的吗?”
不,这不正常。
jQuery Validate插件将始终捕获type="submit"
所有按钮的点击,只要它包含在<form></form>
标记中。
<input type="submit" ...
和<button type="submit" ...
都可以接受。
submitHandler
回调不是强制性选项。
如果您遗漏了submitHandler
回调选项,则在成功验证后,表单将提交到action
属性中指定的网址。
<form action="myScript.php" ...
通常,submitHandler
仅在您想绕过action
并通过.ajax()
提交表单和/或执行其他一些功能时使用。