jquery验证适用于某些浏览器,但不适用于其他浏览器

时间:2010-12-21 06:36:14

标签: javascript jquery jquery-validate validation

为什么这适用于某些人,而不适用于其他人?其他人只需单击按钮,它就不起作用。在我添加了nospaces验证方法后,它开始这样做了。任何建议都将非常感谢。

<form method="post" action="#" id="client_form" class="order-form">
<input type="text" id="user_name" name="user_name" class="req nospaces" />
</form>
 <button id="client_next_btn"><?php echo($content->getString('order')); ?></button>
<script type="text/javascript">

$(function ()
{
jQuery.validator.addClassRules('req', { required: function (el) { return $(el).is(':visible') } });

var nums = ['0','1','2','3','4','5','6','7','8','9'];
var letters = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'];
var alphanumeric = nums.concat(letters);

jQuery.validator.addMethod("nospaces", function(value, element) {
    var val = value.split("");
    var bool = true;
    for (var i in val)
    {
        if (jQuery.inArray(val[i], alphanumeric) == -1)
        {
            bool = false;
            break;
        }
    }
    return bool;
}, "* <?php echo ($content->getString('no_spaces')); ?>");

$('#client_form').validate();
$('#client_next_btn').click(function ()
{
    $('#client_message').empty();

    if ($('#client_form').validate().form())
    {
                alert('works');
            }
    }

}

2 个答案:

答案 0 :(得分:1)

正如小费一样,你可以摆脱这个:

jQuery.validator.addClassRules('req', { 
  required: function (el) { return $(el).is(':visible') } 
});

并使用内置的required课程,只需将ignore option添加到.validate()来电,即可排除:hidden元素,如下所示:

$('#client_form').validate({ ignore: ':hidden' });

答案 1 :(得分:0)

在我发布问题之后,我想出了答案 - addMethod必须与addClassRules一起使用而不是单独使用