Javascript jquery验证在某些浏览器上工作,但在其他浏览器上不工作

Javascript jquery验证在某些浏览器上工作,但在其他浏览器上不工作,javascript,jquery,jquery-validate,validation,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> <b

为什么这对某些人有效,而对其他人无效?其他人只是点击按钮,它不工作。在我添加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');
            }
    }

$(函数()
{
addClassRules('req',{required:function(el){return$(el).is(':visible')});
变量nums=['0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'];
变量字母=['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字母数字=nums.concat(字母);
addMethod(“nospaces”,函数(值,元素){
var val=值。拆分(“”);
var bool=真;
用于(var i在val中)
{
if(jQuery.inArray(val[i],字母数字)=-1)
{
布尔=假;
打破
}
}
返回布尔;
}, "* ");
$(“#客户端表单”).validate();
$('#客户端_下一个_btn')。单击(函数()
{
$(“#客户端_消息”).empty();
if($('#客户端_表单').validate().form())
{
警报(“工作”);
}
}

}

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

作为一个提示,您可以摆脱以下问题:

jQuery.validator.addClassRules('req', { 
  required: function (el) { return $(el).is(':visible') } 
});
使用内置类,只需将添加到调用中以排除元素,如下所示:

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

jsFiddle并调整它,直到没有错误为止,除非您复制了它