2010-04-13 32 views
10

Tôi gặp sự cố với trình chỉnh sửa TinyMCE. Tôi có hình thức với vài trường văn bản và textarea (tinymce), và cho phép xác nhận khách hàng. Khi tôi nhấp vào nút lưu xác thực xảy ra trên tất cả các trường văn bản, nhưng phải mất 2 lần nhấp để xác thực nội dung tinymce. Hơn nữa, xác nhận chỉ hiển thị thông báo khi trường trống hoặc nếu điều kiện không thỏa mãn (chỉ cho nguyên nhân thử nghiệm, tối đa 5 ký tự có thể được nhập), nhưng khi tôi nhập đúng số ký tự (ít hơn 5), thì thông báo lỗi vẫn còn.Vấn đề xác thực máy khách TinyMCE

Dưới đây là mẫu mã:

<%Html.EnableClientValidation(); %> 
    <%= Html.ValidationSummary(true, "Na stranici postoje greške.", new { @style = "color: red;" })%></p> 
    <% using (Html.BeginForm("Create", "Article", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { %> 
    <fieldset> 
     <legend>Podaci za Aranžman</legend> 
      <label class="EditLabel" for="name"> 
       Opis</label> 
      <br /> 
      <%= Html.TextAreaFor(Model => Model.Description, new { style = "width: 100%; height: 350px;", @class = "tinymce" })%> 
      <%= Html.ValidationMessageFor(Model => Model.Description, "", new { @style = "color: red;" })%> 
     <p> 
      <input type="submit" value="Sačuvaj aranžman" /> 
     </p> 
    </fieldset> 
    <% } %> 

và tài sản

[Required(ErrorMessage = "Unesi opis")] 
    [StringLength(5, ErrorMessage = "Opis mora imati manje od 5 znakova")] 
    public string Description { get; set; } 

Mọi góp ý ???

Trả lời

26

Lý do đằng sau điều này là hầu hết các trình chỉnh sửa văn bản phong phú (bao gồm cả mce nhỏ) không sử dụng vùng văn bản. Thay vào đó nó có đầu vào của riêng nó và chỉ sao chép trên văn bản khi biểu mẫu được gửi. Vì vậy, trường bạn đang xác thực không thực sự thay đổi khi bạn nhập nội dung nào đó trong trình chỉnh sửa.

Những gì bạn sẽ phải làm là tạo một công việc xung quanh cho điều này sao chép văn bản từ trình chỉnh sửa đến vùng văn bản khi bạn nhấp vào nút gửi. Điều này có thể được thực hiện như thế này:

$('#mySubmitButton').click(function() { 
    tinyMCE.triggerSave(); 
}); 
+1

Xin chào Mattias, cảm ơn cho câu trả lời, mặc dù tôi đã thử giải pháp này ngay cả trước khi đăng câu hỏi, và nó đã làm việc cho vấn đề nhấp chuột. Nhưng thông báo lỗi của tôi xuất hiện ngay cả khi tôi nhập đúng số ký tự (ít hơn năm) .Và tôi đã tìm ra lý do tại sao, tôi hoàn toàn quên mất các thẻ HTML đã được trình chỉnh sửa thêm vào. Ngay cả khi tôi chỉ nhập một ký tự thì điều kiện của tôi không được đáp ứng vì các thẻ bổ sung. Sai lầm ngu ngốc :) Câu trả lời của bạn vẫn đúng, cảm ơn bạn –

+0

+1 Cảm ơn rất hữu ích. Đã có cùng một vấn đề. – TheCarver

1

Nếu bạn có cùng một vấn đề như TinyMCE cần xác nhận không được bắn vào mẫu nộp Hiện tôi có một giải pháp như thế này, tôi biết đây không phải là cách thích hợp nhưng nó hoạt động tốt thấy mã dưới đây cài đặt gói jquery tynymce trong ứng dụng của bạn

NÀY lÀ MODEL

[Required(ErrorMessage = "Please enter About Company")] 
[Display(Name = "About Company : ")] 
[UIHint("tinymce_jquery_full"), AllowHtml] 
public string txtAboutCompany { get; set; } 

tại trong tập tin cshtml nghĩa theo quan điểm của chúng tôi

012.
<div class="divclass"> 
    @Html.LabelFor(model => model.txtAboutCompany, new { @class = "required" }) 
    @Html.EditorFor(model => model.txtAboutCompany) 
    <span class="field-validation-error" id="AC" style="margin:9px 0 0 157px;"></span> 
</div> 

và trên nút gửi sự kiện nhấp chuột kiểm tra jquery này

$("#BusinessProfile").click(function() { 
     var aboutC = $("#txtAboutCompany").val() 
     var pinfo = $("#txtProductinfo").val(); 
     if (aboutC == "" && pinfo == "") { 
      $("#AC").append("").val("").html("Please enter about company") 
      $("#PI").append("").val("").html("Please enter product information") 
      $("#bpform").valid(); 
      return false; 
     } else if (aboutC == "") { 
      $("#PI").append("").val("").html("") 
      $("#AC").append("").val("").html("Please enter about company") 
      $("#txtAboutCompany").focus(); 
      $("#bpform").valid(); 
      return false; 
     } else if (pinfo == "") { 
      $("#AC").append("").val("").html("") 
      $("#PI").append("").val("").html("Please enter product information") 
      $("#txtProductinfo").focus(); 
      $("#bpform").valid(); 
      return false; 
     } 
     else { 
      $("#AC").append("").val("").html(""); 
      $("#PI").append("").val("").html(""); 
      //return true; 
      $("#bpform").validate(); 
     } 
    }); 

thử mã này,

Các vấn đề liên quan