16

リモート検証と似たようなことをしていますが、私はすでにjquery経由で手動で呼び出しを行い、セットアップが必要なものをセットアップします。手動で控えめな検証エラーをテキストボックスに設定する

私の問題は、特定のテキストボックスが無効であることをバリデータに伝えたい場合(そして、ページが送信されないようにし、テキストボックスをハイライトするなど)です。私はコードからこれをどうやって行いますか?

@Html.LabelFor(m => Model.Slug) 
@Html.TextBoxFor(m => Model.Slug) 
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span> 

if (error) { 
     $('#UrlMsg').html('This name is already in use.').fadeIn('fast'); 
     //what should I do here for the rest of the validation? 
} 

答えて

48

まず、あなたは、検証の概要を追加することができます。

@Html.ValidationMessageFor(m => m.Slug) 

はその後、手動.showError方法でjQueryの検証/控えめな検証をトリガすることができます。ここではサンプルです:

var errorArray = {}; 
errorArray["Slug"] = 'Some error message for the Slug text box'; 
$('#SomeFormId').validate().showErrors(errorArray); 
+2

感謝これはちょうど私が必要とするもので、魅力のように動作します! – Rob

+1

しかし、$( '#SomeFormId')= trueのように手作業でエラーを追加するとフォームは有効ですか? –

1

あなたも行うことができます。

@Html.ValidationMessageFor(m => m.Slug) 

あなたのコードでは、この機能により:

function setError(id, message) { 
     var span = $("span[data-valmsg-for=\"" + id + "\"]"); 
     if (span && span.length > 0) { 
      $(span).html(message); 
      if (message && message != "") { 
       $(span).removeClass("field-validation-valid"); 
       $(span).addClass("field-validation-no-valid"); 
      } else { 
       $(span).removeClass("field-validation-no-valid"); 
       $(span).addClass("field-validation-valid"); 
      } 
     } 
    } 

が続いて設定することができ、エラー

setError("Slug", "errorMsg"); 
関連する問題