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"); 
相關問題