2010-12-21 106 views
0

爲什麼這對某些人而言並不適用於其他人?其他人只需點擊按鈕,它不起作用。它在我添加了nospaces驗證方法後開始這樣做。任何建議將非常感激。jQuery驗證在某些瀏覽器上工作,但不在其他瀏覽器上

<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

js無法修改並調整它直到沒有錯誤,除非您複製它不好 – qwertymk 2010-12-21 06:44:19

回答

0

剛過我張貼的問題,我想出了答案 - addMethod必須與addClassRules一起去,而不是通過自身

1

就像一個提示,你可以擺脫這樣的:

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

,並使用內置required類,只需添加ignore option到您的通話.validate()排除:hidden元素,如下所示:

$('#client_form').validate({ ignore: ':hidden' }); 
相關問題