Why does this work for some people, and doesn't for others? Others just click the button and it doesn't work. It started doing that after I added the nospaces validation method. Any suggestions would be very much appreciated.
<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_bt开发者_开发百科n"><?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');
}
}
}
Just as a tip, you can get rid of this:
jQuery.validator.addClassRules('req', {
required: function (el) { return $(el).is(':visible') }
});
and use the built in required
class, just add the ignore
option to your .validate()
call to exclude :hidden
elements, like this:
$('#client_form').validate({ ignore: ':hidden' });
Just after I posted the question, I figured out the answer - addMethod has to go together with addClassRules and not by itself
精彩评论