16

Tôi đang thực hiện một việc tương tự như xác thực từ xa, ngoại trừ việc tôi đã thực hiện cuộc gọi của mình theo cách thủ công qua jquery và thiết lập mọi thứ tôi đã thiết lập.Cài đặt thủ công lỗi xác thực không phô trương trên hộp văn bản

Bây giờ vấn đề của tôi là, nếu tôi muốn nói cho trình xác nhận rằng một hộp văn bản cụ thể không hợp lệ (và ngăn trang gửi, hãy đánh dấu hộp văn bản, v.v.). Làm thế nào tôi sẽ làm điều này từ mã?

@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? 
} 

Trả lời

48

Thứ nhất, bạn có thể thêm một bản tóm tắt xác nhận:

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

Sau đó, bạn có thể kích hoạt jQuery xác nhận/xác nhận không phô trương với phương pháp .showError. Dưới đây là một ví dụ:

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

nhờ bạn đời này chỉ là những gì tôi cần, hoạt động như một sự quyến rũ! – Rob

+1

Nhưng biểu mẫu hợp lệ nếu các lỗi được thêm thủ công như thế này $ ('# SomeFormId') = true? –

1

Bạn cũng có thể làm:

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

Với chức năng này trong mã của bạn:

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"); 
      } 
     } 
    } 

Sau đó có thể thiết lập các lỗi

setError("Slug", "errorMsg"); 
Các vấn đề liên quan