我想只对一个表单字段覆盖默认客户端验证。
我做的是:
$( ".txt-field" ).change( function( event )
{
if ( !checkField( $(this).val() ) )
{
$(this).removeClass("valid").addClass("input-validation-error");
}
else
{
$(this).addClass("valid").removeClass("input-validation-error");
}
} );
我的HTML是
<div class="fields">
@Html.LabelFor( m => m.BlahBlah.Field, "Field" )
@Html.TextBoxFor( m => m.BlahBlah.Field, new { @class = "textbox txt-field" } )
</div>
但它不起作用。 checkField函数返回true / false。 当我在javascript调试器,并且checkField返回false时,我看到输入验证错误类要添加到我的输入字段,但之后,它被删除,并添加“有效”类! 我究竟做错了什么????我删除了任何模型验证属性,如“required”,“maxLength”等。
答案 0 :(得分:1)
尝试在“模糊”方法上添加逻辑而不是“更改”方法。
$( ".txt-field" ).blur( function( event )
{
if ( !checkField( $(this).val() ) )
{
$(this).removeClass("valid").addClass("input-validation-error");
}
else
{
$(this).removeClass("input-validation-error").addClass("valid");
}
});
答案 1 :(得分:0)
我在你的逻辑中发现了错误。在else块中首先应该删除类然后添加新类。 验证以下代码:
$( ".txt-field" ).change( function( event )
{
if ( !checkField( $(this).val() ) )
{
$(this).removeClass("valid").addClass("input-validation-error");
}
else
{
$(this).removeClass("input-validation-error").addClass("valid");
}
} );