Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc TinyMCE客户端验证问题_Asp.net Mvc_Validation_Tinymce_Client Side - Fatal编程技术网

Asp.net mvc TinyMCE客户端验证问题

Asp.net mvc TinyMCE客户端验证问题,asp.net-mvc,validation,tinymce,client-side,Asp.net Mvc,Validation,Tinymce,Client Side,我对TinyMCE编辑器有问题。我有一个只有少量文本字段和文本区域(tinymce)的表单,并且启用了客户端验证。当我单击“保存”按钮时,所有文本字段都会进行验证,但需要单击2次才能验证tinymce内容。此外,验证仅在字段为空或条件不满足时显示消息(仅针对测试原因,最多可输入5个字符),但当我输入正确的字符数(少于5个)时,错误消息将保留 下面是代码示例: <%Html.EnableClientValidation(); %> <%= Html.Validat

我对TinyMCE编辑器有问题。我有一个只有少量文本字段和文本区域(tinymce)的表单,并且启用了客户端验证。当我单击“保存”按钮时,所有文本字段都会进行验证,但需要单击2次才能验证tinymce内容。此外,验证仅在字段为空或条件不满足时显示消息(仅针对测试原因,最多可输入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>
    <% } %>

有什么建议吗?

这背后的原因是大多数富文本编辑器(包括tiny mce)不使用文本区域。相反,它有自己的输入,在提交表单时只复制文本。因此,在编辑器中键入内容时,要验证的字段实际上不会更改

您需要做的是为此创建一个变通方法,当您单击submit按钮时,将文本从编辑器复制到文本区域。可以这样做:

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

如果你有像Tinymce一样的问题,需要的验证在表单提交时没有触发,我有一个这样的解决方案,我知道这不是正确的方式,但它工作良好,请参阅下面的代码 在应用程序中安装tynymce jquery包

这是一个模型

现在在我们看来,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>

试试这段代码,

你好,Mattias,谢谢你的回答,尽管我在发布问题之前就尝试过这个解决方案,它对点击问题很有效。但即使我输入了正确的字符数(少于5个),也会出现错误消息。我弄明白了原因,我完全忘记了编辑器添加的HTML标记。即使我只键入一个字符,由于附加的标记,我的条件也不满足。愚蠢的错误:)你的答案仍然是正确的,再次感谢你
[Required(ErrorMessage = "Please enter About Company")]
[Display(Name = "About Company : ")]
[UIHint("tinymce_jquery_full"), AllowHtml]
public string txtAboutCompany { get; set; }
<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>
$("#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();
        }
    });