2016-02-26 223 views
0

我有一个需要验证的表单。我使用jQuery验证。我有问题显示错误消息。这是我的javascript代码:jQuery验证不显示错误信息

$(function() { 
    $("#submission-form").validate({ 
     rules: { 
      WorkOrderId: "required", 
      ActivityId: "required" 
     }, 
     messages: { 
      WorkOrderId: "Please choose WO", 
      ActivityId: "Please choose activity" 
     } 
    }); 
}); 

下面是我的html:

@using (Html.BeginForm("Create", "Submissions", FormMethod.Post , new { id = "submission-form" })) { 
      @Html.AntiForgeryToken() 
      @Html.ValidationSummary(true) 

      <fieldset> 
       <legend>WorkOrderSubmission</legend> 

       <div class="editor-label"> 
        @Html.LabelFor(model => model.WorkOrderId, "WorkOrder") 
       </div> 
       <div class="editor-field"> 
        @Html.DropDownList("WorkOrderId", (SelectList)ViewBag.WorkOrders, "", new { @data_rule_required="true", @data_msg_required="The Workorder field is required." }) 
        @Html.ValidationMessageFor(model => model.WorkOrderId) 
       </div> 

       <div class="editor-label"> 
        @Html.LabelFor(model => model.ActivityId, "Activity") 
       </div> 
       <div class="editor-field"> 
        @Html.DropDownList("ActivityId", (SelectList)ViewBag.Activities, "", new { @data_rule_required="true", @data_msg_required="The Activity field is required." }) 
        @Html.ValidationMessageFor(model => model.ActivityId) 
       </div> 
       <p> 
        <input type="submit" value="Create" /> 
       </p> 
      </fieldset> 
     } 

当我点击提交,我可以看到类加入元素,但不显示错误消息。 之前提交:

<select data-msg-required="The Workorder field is required." data-rule-required="true" id="WorkOrderId" name="WorkOrderId" aria-required="true"> 
    <option value=""></option> 
    <option value="1">WO000001 - 001</option> 
    <option value="2">WO000002 - 001</option> 
</select> 

提交后:

<select data-msg-required="The Workorder field is required." data-rule-required="true" id="WorkOrderId" name="WorkOrderId" aria-required="true" class="input-validation-error" aria-describedby="WorkOrderId-error" aria-invalid="true"> 
    <option value=""></option> 
    <option value="1">WO000001 - 001</option> 
    <option value="2">WO000002 - 001</option> 
</select> 

如何显示错误消息?

生成的HTML:

<div class="editor-field"> 
    <select data-msg-required="The Workorder field is required." data-rule-required="true" id="WorkOrderId" name="WorkOrderId"><option value=""></option> 
    <option value="1">WO000001 - 001</option> 
    <option value="2">WO000002 - 001</option> 
    </select> 
    <span class="field-validation-valid" data-valmsg-for="WorkOrderId" data-valmsg-replace="true"></span> 
</div> 

<div class="editor-label"> 
    <label for="ActivityId">Activity</label> 
</div> 
<div class="editor-field"> 
    <select data-msg-required="The Activity field is required." data-rule-required="true" id="ActivityId" name="ActivityId"> 
    <option value=""></option> 
    <option value="1">Activity 1</option> 
    <option value="22">Activity 22</option> 
    </select> 
    <span class="field-validation-valid" data-valmsg-for="ActivityId" data-valmsg-replace="true"></span> 
</div> 

我有标签data-msg-required="The Workorder field is required." data-rule-required="true",但我无法看到错误消息。

+0

处理开箱即用(:

,最后加入脚本部分脚本代码你的脚本是不必要的)? –

+0

它实际上显示了data-fule-required和data-msg-required属性,但它没有显示错误消息。 – Eric

+0

'data-rule-required'和'data-msg-required'完全不涉及不显眼的客户端验证 - 它们只是您自己手动添加的任意html属性。在你的视图中添加'[Required]'属性到你的'WorkOrderId'和'ActivityId'属性并包含'jquery.validatate.unobrusive.js',它将在你的脚本中正常工作(并且删除这些属性) –

回答

1

所有的选项都有价值, ,因为第一个选项被选中默认,表格看起来有效。

如果您在顶部添加“选择...”选项并且值为“”,则表单提交时会显示错误消息。

<option value="">Choose...</option> 

埃里克,我做了一个快速演示,我所犯的错误正是为了以下;

首先,

确保您添加jQuery验证捆绑到_Layout.cshtml

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 

然后

@Html.DropDownList("WorkOrderId", (SelectList)ViewBag.WorkOrders, "", new { @required = "required" }) 

添加所需的足够,验证方法为你添加其他属性。你为什么不使用`jquery.validate.unobtrusive.js`所以这一切都是

@section scripts{ 
    <script type="text/javascript"> 
     $(function() { 
      $("#submission-form").validate({ 
       rules: { 
        WorkOrderId: "required", 
        ActivityId: "required" 
       }, 
       messages: { 
        WorkOrderId: "Please choose WO", 
        ActivityId: "Please choose activity" 
       } 
      }); 
     }); 
    </script> 
} 

// excludePropertyErrors: 
    // true to have the summary display model-level errors only, or false to have 
    // the summary display all errors. 
    public static MvcHtmlString ValidationSummary(this HtmlHelper htmlHelper, bool excludePropertyErrors); 
+0

第一个选项是空的。 – Eric

+0

为什么不只是添加新的{required =“required”} – irfan

+0

有/没有必需的属性,表单仍然没有提交。按下提交按钮时,边框变成红色。我的问题是“请选择我”和“请选择活动”的消息不会出现。我如何让消息出现? – Eric