【问题标题】:How creating Validation in jQuery如何在 jQuery 中创建验证
【发布时间】:2019-05-14 09:12:48
【问题描述】:

我正在努力为 jQuery 中的输入创建验证。我有一个 btn 来创建一行。当我单击此 btn 时,您将看到一个弹出页面,其中包括 2 个文本框和 1 个下拉菜单。我想检查这些拖曳文本框是否不为空,然后它会提交。这是我创建的 btn 打开弹出窗口:

<div class="col-lg-12 panel">
    <a href="#" class="btn btn-primary" data-toggle="modal" data-target="#editModal">
        <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> @Resource.Add_new_item
    </a>
</div>

这就是弹出窗口中的内容:

<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            @using (Html.BeginForm("Edit", "ApplicationDetailList", new {page = Model.PageNumber,filter.ListType, filter.PackageName }, FormMethod.Post))
            {
                @Html.AntiForgeryToken()
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="addModalLabel">@Resource.Add_new_item </h5>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label>@Resource.Application_category_tittle *</label>
                            <input name="id" id="id" class="form-control" style="direction: ltr;"/>
                            @*@Html.ValidationMessageFor(m => m[0].Id);*@
                        </div>
                        <div class="form-group">
                            <label>@Resource.List_type *</label>
                            @Html.DropDownList("listType", ApplicationDetailListType.Solr.ToSelectListItems(false, filter.ListType), new { @class = "form-control"})                           
                            @*<input name="tags" class="form-control" style="direction: ltr;"/>*@
                        </div>
                        <div class="form-group">
                            <label>@Resource.Package_name *</label>
                            <input name="packageName" class="form-control" style="direction: ltr;"id="packageName" />
                            @*@Html.ValidationMessageFor(m=>m[0].PackageName);*@
                        </div>
                        <label id="validation">

                        </label>
                        <div class="form-group">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-success btn-edit-save">@Resource.Save</button>
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">@Resource.Cancel</button>
                    </div>
                </div>
            }
        </div>
    </div>

这是我制作的部分脚本:

var edit = $("#editModal");
           // var packageName = $("#packageName").val();
            //var id = $("#id").val();
            //packageName.length > 0 && id.length > 0 ?
                 $(".btn-edit-save").click(function() {
                    $("form", edit).submit();
                });

问题出在这里:

 $(".btn-edit-save").click(function() {
                    $("form", edit).submit();
                });

如果输入为空,我不想提交,只显示它们为空的消息。非常感谢

【问题讨论】:

  • 你能做一个小提琴吗

标签: jquery html asp.net-mvc


【解决方案1】:

您可以附加一个标签错误属于文本框和边框错误字段为

$(".btn-edit-save").click(function() {
     var title = $('#id').val();
     var packageName = $('#packageName').val();
     var isValid = true;
     if(title == ""){
        $('#id').after("<label class='error'>Title is required</label>");
        $('#id').css('border', '1px solid red');
        isValid = false;
     }
     if(packageName == ""){
        $('#packageName').after("<label class='error'>PackageName is required</label>");
        $('#packageName').css('border', '1px solid red');
        isValid = false;
     }
     if(isValid){
        //submit form
        //$("form", edit).submit();
     }
});

$(".btn-edit-save").click(function() {
     var title = $('#id').val();
     var packageName = $('#packageName').val();
     var isValid = true;
     if(title == ""){
        $('#id').after("<label class='error'>Title is required</label>");
        $('#id').css('border', '1px solid red');
        isValid = false;
     }
     if(packageName == ""){
        $('#packageName').after("<label class='error'>PackageName is required</label>");
        $('#packageName').css('border', '1px solid red');
        isValid = false;
     }
     if(isValid){
        //submit form
        //$("form", edit).submit();
     }
});
.error{
color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="addModalLabel">@Resource.Add_new_item </h5>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label>@Resource.Application_category_tittle *</label>
                            <input name="id" id="id" class="form-control" style="direction: ltr;"/>
                            
                        </div>
                      
                        <div class="form-group">
                            <label>@Resource.Package_name *</label>
                            <input name="packageName" class="form-control" style="direction: ltr;"id="packageName" />
                            
                        </div>
                        <label id="validation">

                        </label>
                        <div class="form-group">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-success btn-edit-save">@Resource.Save</button>
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">@Resource.Cancel</button>
                    </div>
                </div>

【讨论】:

    【解决方案2】:

    如果您不想在输入为空的情况下提交,您可以使用Ajax.Beginform 而不是Html.Beginform。您可以使用Ajax.BeginFormOnBegin 属性定义一个javascript 函数并在提交之前触发它。

    但您还应该添加对jquery.unobtrusive-ajax.min.js 的引用。

    <html>
    <head>
        <script src="/Scripts/jquery-[yourVersion].min.js" type="text/javascript"></script>
        <script src="/Scripts/jquer.unobtrusive-ajax.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            function YourValidationFunc() {
                //add your validation code
                return true;
            }
        </script>
    </head>
    <body>
        <div>
            @using (Ajax.BeginForm("Edit", "ApplicationDetailList", new AjaxOptions
                {
                    HttpMethod = "POST",
                    OnBegin = "return YourValidationFunc();"
                }, new { page = Model.PageNumber,filter.ListType, filter.PackageName }))
            {
                @Html.AntiForgeryToken()
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="addModalLabel">@Resource.Add_new_item </h5>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label>@Resource.Application_category_tittle *</label>
                            <input name="id" id="id" class="form-control" style="direction: ltr;"/>
                            @*@Html.ValidationMessageFor(m => m[0].Id);*@
                        </div>
                        <div class="form-group">
                            <label>@Resource.List_type *</label>
                            @Html.DropDownList("listType", ApplicationDetailListType.Solr.ToSelectListItems(false, filter.ListType), new { @class = "form-control"})                           
                            @*<input name="tags" class="form-control" style="direction: ltr;"/>*@
                        </div>
                        <div class="form-group">
                            <label>@Resource.Package_name *</label>
                            <input name="packageName" class="form-control" style="direction: ltr;"id="packageName" />
                            @*@Html.ValidationMessageFor(m=>m[0].PackageName);*@
                        </div>
                        <label id="validation">
    
                        </label>
                        <div class="form-group">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <input type="submit" name="Submit" class="btn btn-success btn-edit-save" value="@Resource.Save" />
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">@Resource.Cancel</button>
                    </div>
                </div>
            }
        </div>
    </body>
    </html>
    

    在上面的示例中,OnBegin 将通过以下方式触发:

    <input type="submit" name="Submit" class="btn btn-success btn-edit-save" value="@Resource.Save" />
    

    【讨论】:

      【解决方案3】:

      您可以为输入元素添加“必需”属性,如下所示

        <input type="text" required name="anyName" />
      

      如果你想明确检查,然后通过选择器检查。 $("#Selectorname").val() //如果有的话会给你价值

      【讨论】:

        【解决方案4】:

        Jquery 中的$.submit 方法提交表单。

        在调用提交方法之前你需要验证

        $(".btn-edit-save").click(function() {
                     if(validate(fname)==true)
                       {
                         $("form", edit).submit();
                        }
                       else alert("empty fname");
                    });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-01-08
          • 1970-01-01
          • 2011-10-18
          • 2012-06-09
          • 2023-03-20
          • 2010-12-24
          • 2011-08-28
          相关资源
          最近更新 更多