2016-09-08 82 views
-2

早上好球員狀態驗證,不知你是否可以幫助我在這個問題:當另一個輸入值滿足條件的要求我申請驗證的選擇要素。我正在使用驗證jQuery插件才能做到這一點。這是僞代碼:if(textbox == "valueX"){mySelectEelement is required;}(意味着我必須從select元素中選擇一個值)。所以出於某種原因,select元素沒有采用我想要應用的驗證。應用使用jQuery驗證

請承擔我爲此創建完整的示例代碼看看Plunker

<html lang="en"> 
<head> 
<title></title> 
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css"> 
<script src="https://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="https://code.jquery.com/ui/1.9.1/jquery-ui.js"></script> 
<script> 
$(function() { 
$.validator.setDefaults({ 
     //debug: true, 
     success: "valid" 
    }); 

    $("#myform").validate({ 
     rules: { 
     borough: { 
       required: false 
     } 
     } 
    }); 

    $('#state').on('change', function() { 
    if ($(this).val().toUpperCase() == "NY" || $(this).val().toUpperCase() == "NEW YORK") { 
     $('#borough').rules('add', { 
      required: true 
     }); 
    } else{ 
     $('#borough').rules('remove'); 
    } 
});  
}); 
</script> 

</head> 
<body> 
<form id="myform"> 
<div> 
<p id="pid"></p> 
<input id='text' type='text' value='other'/> 
</div> 
<br/> 
<input type="text" id="state" name="state" /> 

    <select name="borough" id="borough"> 
    <option value="" select="selected"></option> 
    <option value="Staten Island">Staten Island</option> 
    <option value="Brooklyn">Brooklyn</option> 
    <option value="Queens">Queens</option> 
    <option value="NY">NY</option> 
    </select> 
</form></body> </html> 
+0

請包括***所有相關***的OP本身的代碼。你也從來沒有用你的代碼解釋過這個問題,或者問過一個問題。謝謝。 – Sparky

+0

我剛添加完整的示例。 – John

+0

解釋是非常清楚的,我說我正在嘗試,所以如果我說我需要幫助才能執行這個任務,並暴露代碼是因爲它運行不好! – John

回答

2

無需外部處理器和功能。你會使用depends屬性requiredrules對象中包含的條件邏輯...

$("#myform").validate({ 
    rules: { 
     borough: { 
      required: { 
       depends: function(element) { 
        if ($('#state').val().toUpperCase() == "NY" || $('#state').val().toUpperCase() == "NEW YORK") { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     } 
    } 
}); 

DEMO:jsfiddle.net/ubkb0pmd/


和它的作品一樣好,而不depends ... 。

$("#myform").validate({ 
    rules: { 
     borough: { 
      required: function(element) { 
       if ($('#state').val().toUpperCase() == "NY" || $('#state').val().toUpperCase() == "NEW YORK") { 
        return true; 
       } else { 
        return false; 
       } 
      } 
     } 
    } 
}); 

DEMO 2:jsfiddle.net/ubkb0pmd/1/

+0

是的,這正是我所缺少的依賴對象。謝謝。 – John

+0

是的,我只是測試它這樣,它的工作原理也一樣,我看到我的問題是,我創建一個單獨的聲明(函數)所有其他行是幾乎相同的規則! – John

+0

@約翰,其實,[你原來的方法應該有工作太(http://jsfiddle.net/ubkb0pmd/2/),雖然不如有效。你的根本問題是,你從一開始就把'borough'聲明爲'required:true',這在用戶輸入任何東西到'state'之前優先。 – Sparky