2017-07-30 59 views
1

我已經成功地在其他頁面上使用過定義。基本上它應該使該字段成爲必需字段,但如果僅輸入空白字符(默認情況下鍵入單個空格會導致所需的檢查通過),則會失敗。我拋出一個警報,只是爲了看看處理程序何時被觸發以及當時的值爲this。當我期待它時,它就會被解僱,價值就如我所料。它應該返回false但顯然它不是因爲錯誤沒有顯示。如果我刪除了depends函數,並且只有required: true,那麼當用戶離開該字段時,它會正確顯示該錯誤。這是怎麼回事?函數結果沒有顯示錯誤文本

ContactName: { 
     required: { 
      depends: function() { 
       alert("'" + $(this).val() + "'"); 
       if ($.trim($(this).val()).length === 0) { 
        $(this).val($.trim($(this).val())); 
        return false; 
       } 
       return true; 
      } 
     }, 
     maxlength: 100 
    } 
+0

所以什麼是價值$ .trim($(this).val())。length'? –

+0

@u_mulder 0,我的傢伙。 – helrich

回答

0

您可以更改規則聯繫人姓名像(詳細看看到rules examples):

ContactName: { 
    required: true, 
    minlength: { 
     depends: function(ele) { 
      if (ele.value.trim().length === 0) { 
       ele.value = ''; 
       return false; 
      } 
      return true; 
     } 
    }, 
    maxlength: 100 
} 

的片段:

$("#commentForm").validate({ 
 
    rules: { 
 
     ContactName: { 
 
      required: true, 
 
      minlength: { 
 
       depends: function(ele) { 
 
        if (ele.value.trim().length === 0) { 
 
         ele.value = ''; 
 
         return false; 
 
        } 
 
        return true; 
 
       } 
 
      }, 
 
      maxlength: 100 
 
     } 
 
    }, 
 
    messages: { 
 
     ContactName: "Please enter your contact name" 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script> 
 

 

 
<form class="cmxform" id="commentForm" method="get" action=""> 
 
    <fieldset> 
 
     <p> 
 
      <label for="ContactName">Name</label> 
 
      <input id="ContactName" name="ContactName" type="text"> 
 
     </p> 
 
     <p> 
 
      <input class="submit" type="submit" value="Submit"> 
 
     </p> 
 
    </fieldset> 
 
</form>