我使用kendoui部件與knockoutjs爲數據源的條件驗證。我有一個數據綁定到StartClientFromWebEnabled
可觀察變量的複選框。輸入文本框僅在複選框ic被選中時纔可見(StartClientFromWebEnabled
爲真)。輸入具有必需的屬性。我希望僅在複選框被選中時觸發所需的驗證。KendoUI,淘汰賽,場
這裏是我的html:
<table>
<tr>
<td><label for="startClientFromWebEnabled">Client Launch From Web:</label></td>
<td><input type="checkbox" id="startClientFromWebEnabled" name="startClientFromWebEnabled" data-bind="checked: StartClientFromWebEnabled, enable: IsEditable" onchange="startClientFromWebToggleRequiredAttribute()" /></td>
</tr>
<tr data-bind="visible: StartClientFromWebEnabled">
<td><label for="mimeType">Protocol:</label></td>
<td>
<input id="mimeType" name="mimeType" data-bind= "value: MimeType, enable: IsEditable" />
<span class="k-invalid-msg" data-for="mimeType"></span>
</td>
</tr>
</table>
我嘗試了一些方案,包括用下面的javascript函數添加和刪除所需要的屬性上的複選框設置onChange event
:
startClientFromWebToggleRequiredAttribute = function() {
var checkbox = document.getElementById("startClientFromWebEnabled");
var mimeType = document.getElementById("mimeType");
if (checkbox.checked) {
mimeType.setAttribute("required", "required");
}
else {
mimeType.removeAttribute("required");
}
}
的問題是,我會需要此功能,在我的應用程序依賴於很多屬性和我的選擇是讓這個功能一般用一些參數和從HTML像這樣相應paramater值叫它:
toggleRequiredAttribute = function (checkboxElement, inputElement1, inputElement2 ...) {
var checkbox = document.getElementById(checkboxElement);
var inputElement1 = document.getElementById(inputElement1);
if (checkbox.checked) {
inputElement1.setAttribute("required", "required");
}
else {
inputElement1.removeAttribute("required");
}
}
<input type="checkbox" id="startClientFromWebEnabled" name="startClientFromWebEnabled" data-bind="checked: StartClientFromWebEnabled, enable: IsEditable" onchange="toggleRequiredAttribute('startClientFromWebEnable', 'mimeType')" />
我真的不喜歡這種情況。我不知道有沒有像kendoui中的條件驗證,只有當某些條件滿足時纔會觸發。任何其他建議也是受歡迎的。
我感興趣的只是在客戶端驗證,我有,我用流利的服務器端驗證沒有問題驗證。我不太瞭解代碼的JavaScript部分與我的情況有關。你能否給我一個示例代碼,我發佈的示例代碼(只有JavaScript部分)。 – Mdb
這可能矯枉過正以滿足您的需求,但服務器端代碼會將屬性添加到javascript使用的複選框和文本框中。當劍道驗證觸發它首先獲取文本框的「VAL-checkboxdependantvalidator-checkboxid」屬性,使用它來獲取複選框的狀態,那麼驗證文本如果需要的話。 – Neepheed