不显眼的验证会向您的验证元素添加一个 css 类,这就是它确定是否显示或隐藏验证消息的方式。这是一个例子:
<div class="editor-label">
<label>Start date</label>
<input class="text-box single-line" data-val="true" data-val-required="Must not be Empty" id="StartDate" name="StartDate" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="StartDate" data-valmsg-replace="true"></span>
</div>
<div class="targetDiv">Your div shown only if StartDate is invalid</div>
这就是您的 html 在源代码中的外观。在 StartDate 输入中写入无效数据后,它看起来会略有不同,请注意添加到输入和 span 元素的类:
<div class="editor-label">
<label>Start date</label>
<input class="text-box single-line input-validation-error" data-val="true" data-val-required="Must not be Empty" id="StartDate" name="StartDate" type="text" value="">
<span class="field-validation-error ui-state-error-icon ui-icon-alert" data-valmsg-for="StartDate" data-valmsg-replace="true"></span>
</div>
您可以检查 span 元素是否具有field-validation-error类并显示您的targetDiv。我模仿了不显眼的验证的工作原理并提供了工作示例:
</p>
$(function(){
$('.targetDiv').hide(); //hide your div
$('#StartDate').change(function() { //capture change event for your input StartDate
$(this).addClass('input-validation-error'); //add unobtrusive css class for not valid
$(this).next().removeClass('field-validation-valid').addClass('field-validation-error ui-state-error-icon ui-icon-alert'); //add unobtrusive css class for not valid on span
if( $(this).next().hasClass('field-validation-error')) //check if span has a error class on it
{
$('.targetDiv').show(); //show your div
}
});
});
在现实世界的示例中,您只需要使用:
$('#StartDate').change(function() {
if( $(this).next().hasClass('field-validation-error'))
{
$('.targetDiv').show();
}
});
这是 jsFiddle:http: //jsfiddle.net/mgrcic/Zj6zS/
问候。