如何使用jquery验证验证列表框

时间:2013-09-26 18:25:59

标签: javascript jquery validation

我正在使用jquery验证,它适用于普通字段。我需要一种方法来确保在满足验证之前,一个列表框中至少有一个条目。我尝试添加自定义方法。

$.validator.addMethod('checklist', function(value, element) {
  if ($("#currentimp").val() ==""){
    return false;
    } else return true;
  }, "Listbox is empty");

然后在规则中我有以下内容:

currentimp: {
   checklist:true
}

我不确定是否有更好的方法来实现这一目标,但我没有看到任何好的例子来说明我正在尝试做什么。我还将表单按钮更改为提交按钮,但除非我向submithandler添加提交功能,否则它不会提交。这是正常的吗?

2 个答案:

答案 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()提交表单和/或执行其他一些功能时使用。