【问题标题】:Custom jQuery validation function not firing自定义 jQuery 验证功能未触发
【发布时间】:2012-08-16 14:59:39
【问题描述】:

我正在尝试使用自定义验证功能来检查是否至少选中了一个复选框。但是验证功能没有触发。我错过了什么?

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
    <script type="text/javascript" src="../Scripts/jquery-1.8.0.js"></script>
    <script type="text/javascript" src="../Scripts/jquery.validate.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $.validator.addMethod("fruits", function(value, elem, params) {
                if($(".fruits:checkbox:checked").length > 0){
                    return true;
                }else {
                    return false;
                }
            },"pick at least one plz");​

            $("#form1").validate({
                rules:{
                    fruits:{
                        fruits: true
                    }
                },
                submitHandler: function(form) {
                    alert("submitting...");
                    form.submit();
                },
                invalidHandler: function(form){
                    alert("invalid form");
                }
            });
        });
    </script>
</head>
<body>
    <form id="form1">
    <input type="checkbox" class="{fruits: true}" name="fruits" id="chkApple" value="1" />Apple<br />
    <input type="checkbox" class="fruits: true}" name="fruits" id="chkBanana" value="2" />Banana<br />
    <input type="submit" value="Submit" />
    </form>
</body>
</html>

【问题讨论】:

标签: jquery jquery-validate


【解决方案1】:

尝试:

$.validator.addMethod("fruits", function(value, elem, params) {
  return $(".fruits").is(":checked")
},"pick at least one plz");​

【讨论】:

  • 这个答案缺少教育解释。
【解决方案2】:

用这个替换你的代码

if($(".fruits").is(":checked")){

【讨论】:

  • 这个答案缺少教育解释。
【解决方案3】:

查看此链接source

 $(document).ready(function(){
  $('#submit_button').click(function() {
    if (!$("input[@name='name']:checked").val()) {
       alert('Nothing is checked!');
        return false;
    }
    else {
      alert('One of the  buttons is checked!');
    }
  });
});

【讨论】:

  • 这个答案缺少教育解释。
【解决方案4】:

我让它工作了。不触发的问题是由有问题的编码问题引起的。解决之后,调用自定义函数。但是$(".fruits").is(":checked 语法确实对我有用,它一直说没有选择任何内容。所以我用for 循环去了老学校。

<html>
<head>
    <title></title>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $.validator.addMethod("fruits", function (value, elem, params) {
                var items = $("input[name^='fruits']");
                for (i = 0; i < items.length; i++) {
                    if ($(items[i]).is(":checked")) {
                        return true;
                    }
                }
                return false;
            }, "pick one plz");

            $("#form1").validate({
                rules: {
                    fruits: {
                        fruits: true
                    }
                },
                submitHandler: function (form) {
                    alert("submitting...");
                    form.submit();
                },
                invalidHandler: function (form) {
                    alert("invalid form");
                }
            });
        });
    </script>
</head>
<form id="form1">
<input type="checkbox" class="{fruits: true}" name="fruits" id="chkApple" value="1" />Apple<br />
<input type="checkbox" class="fruits: true}" name="fruits" id="chkBanana" value="2" />Banana<br />
<input type="submit" value="Submit" />
</form>
<body>
</body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多