HTML
<select name="CustomerType" id="CustomerType" class="form-control" onchange="CustomerTypeChange()">
<option value="@((int)THOS.Utilities.Enumerations.Enumerations.Customer.CustomerType.Company)" selected="@(Model != null ? (Model.CustomerType == (int)THOS.Utilities.Enumerations.Enumerations.Customer.CustomerType.Company):true)">Company</option>
<option value="@((int)THOS.Utilities.Enumerations.Enumerations.Customer.CustomerType.Person)" selected="@(Model != null ? ((Model.CustomerType == (int)THOS.Utilities.Enumerations.Enumerations.Customer.CustomerType.Person)) : false)">Person</option>
</select>
<input type="text" name="TaxNumber" id="TaxNumber" class="form-control parsley-validated">
当客户类型更改低于js代码运行时
Javascript代码:
function CustomerTypeChange() {
var customerType = document.getElementById("CustomerType").value;
if (customerType == 10) {
$('#TaxNumber').attr("data-required", 'false');
}
if (customerType == 20) {
$("#TaxNumber").attr("data-required", 'true');
}
}
当我添加TaxNumber属性为true / false attr(“data-required”,true)或 attr(“data-required”,false)永远不会有效。
编辑:
$("#TaxNumber").data('data-required', true); does not work too
$("#TaxNumber").data('required', true); does not work too
如果我检查浏览器控制台,我没有任何错误,我完全错过了?
感谢。
答案 0 :(得分:0)
建议的改进:
使用jQuery时,请避免通过属性连接事件。还可以使用jQuery进行选择值检查(使用val()
)。
删除onchange
属性并改为尝试:
// Shortcut DOM ready handler
$(function(){
// Listen for change event
$('#CustomerType').change(function(){
// Use jQuery val() to get select values
var customerType = $(this).val();
if (customerType == 10) {
$("#TaxNumber").attr("data-required", 'false');
}
if (customerType == 20) {
$("#TaxNumber").attr("data-required", 'true');
}
});
});
JSFiddle:http://jsfiddle.net/TrueBlueAussie/CmW9e/1/
如果您检查DOM,您会看到data-required
属性设置正确。
您的原创“也有效”:
您的原始代码也有效:http://jsfiddle.net/TrueBlueAussie/CmW9e/2/因此,更有可能的问题是您的验证框架未对所需标志进行动态更改。 问题实际上是您希望验证规则根据该属性自动更新吗?
解决方案:
大多数验证框架允许您更改客户端规则(添加和删除规则等),但您需要提供用于获取特定答案的验证框架的详细信息:)