2010-04-13 64 views
10

我有TinyMCE編輯器的問題。我有幾個文本字段和textarea(tinymce)的表單,並啓用了客戶端驗證。當我單擊保存按鈕驗證發生在所有文本字段上,但需要2次點擊來驗證tinymce內容。此外,驗證只在字段爲空時或條件不滿足時顯示消息(僅用於測試原因,最多可輸入5個字符),但當輸入正確的字符數(小於5)時,錯誤消息將保留。TinyMCE客戶端驗證問題

這裏的代碼示例:

<%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> 
    <% } %> 

和財產

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

任何建議???

回答

26

這背後的原因是大多數富文本編輯器(包括微型mce)不使用文本區域。相反,它有它自己的輸入,只有在提交表單時才複製文本。因此,當您在編輯器中鍵入內容時,您正在驗證的字段實際上並未發生更改。

您需要做的是爲此創建一個解決方法,當您單擊提交按鈕時,將文本從編輯器複製到文本區域。這是可以做到這樣的:

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

您好馬蒂亞斯,感謝答案,altough我沒有嘗試這種解決方案之前,甚至張貼問題,它爲點擊問題工作。但即使輸入了正確的字符數(少於五個),我的錯誤信息也出現了。我弄清楚爲什麼,我完全忘記了編輯器添加的HTML標籤。即使我只鍵入一個字符,但由於附加標籤​​,我的條件沒有得到滿足。愚蠢的錯誤:)仍然你的答案是正確的,再次感謝你 – 2010-04-13 13:04:38

+0

+1非常有用的感謝。有同樣的問題。 – TheCarver 2012-03-16 18:50:00

1

如果你有同樣的問題,像TinyMCE的需要驗證不火的形式提交一次,我有這樣一個解決方案,我知道這是不妥當的方式,但它工作得很好看下面的代碼 安裝tynymce jQuery的包在你的應用

THIS IS型號

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

現在CSHTML文件意味着在我們看來

<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> 

,並在提交按鈕單擊事件查看這個jQuery

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

試試這個代碼,