Проблема проверки клиента TinyMCE
У меня проблема с редактором TinyMCE. У меня есть форма с небольшим количеством текстовых полей и textarea (tinymce), а также проверка клиента. Когда я нажимаю кнопку "Сохранить", валидация выполняется во всех текстовых полях, но для проверки содержимого tinymce требуется 2 щелчка. Кроме того, проверка показывает сообщение только в том случае, если поле пустое или если условие не выполняется (только для тестовых причин может быть введено не более 5 символов), но при вводе правильного количества символов (менее 5) сообщение об ошибке остается.
Здесь пример кода:
<%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; }
Любые предложения???
Ответы
Ответ 1
Причина этого заключается в том, что большинство текстовых редакторов (включая крошечный mce) не используют текстовую область. Вместо этого он имеет свой собственный вход и только копии по тексту при отправке формы. Поэтому поле, которое вы проверяете, на самом деле не меняется, когда вы вводите что-то в редакторе.
Что вам нужно сделать, так это создать для этого работу, которая копирует текст из редактора в текстовую область, когда вы нажимаете кнопку отправки. Это можно сделать следующим образом:
$('#mySubmitButton').click(function() {
tinyMCE.triggerSave();
});
Ответ 2
Если у вас есть такая же проблема, как Tinymce, требуемая проверка не является огнем на время отправки формы, у меня есть одно решение, подобное этому, я знаю, что это не правильный способ, но он отлично работает, см. ниже код
установить пакет tynymce jquery в ваше приложение
ЭТО МОДЕЛЬ
[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();
}
});
попробуйте этот код,