【问题标题】:asp net mvc custom client side validation for one field一个字段的asp net mvc自定义客户端验证
【发布时间】:2013-05-29 08:50:19
【问题描述】:

我只想覆盖一个表单字段的默认客户端验证。

我所做的是:

  $( ".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 函数返回真/假。 当我在 javascript 调试器中,并且 checkField 返回 false 时,我看到 input-validation-error 类被添加到我的输入字段中,但之后,它被删除并添加了“有效”类! 我究竟做错了什么????我已删除任何模型验证属性,例如“required”、“maxLength”等。

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-3 validation unobtrusive-validation


    【解决方案1】:

    尝试在“blur”方法而不是“change”方法上添加逻辑。

     $( ".txt-field" ).blur( function( event )
    {
     if ( !checkField( $(this).val() ) )
     {
        $(this).removeClass("valid").addClass("input-validation-error");
     }
     else
     {
        $(this).removeClass("input-validation-error").addClass("valid");
     }
    

    });

    【讨论】:

    • 谢谢!!但是你能解释一下为什么模糊有效而不是改变吗??
    【解决方案2】:

    我发现你的逻辑有错误。在 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");
         }
      } );
    

    【讨论】:

    • 谢谢您,但仍然无法正常工作。尽管 checkField 方法返回 false,但添加了有效的类,即使我注释了 else 块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    相关资源
    最近更新 更多