为什么这适用于某些人,而不适用于其他人?其他人只需单击按钮,它就不起作用。在我添加了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');
}
}
}
答案 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一起使用而不是单独使用