【问题标题】:Form does not submit when I click submit button of it C# & jQuery当我单击 C# 和 jQuery 的提交按钮时,表单不提交
【发布时间】:2017-03-27 12:04:15
【问题描述】:

我从数据库表中附加了我的选择选项。选择选项有两种类型

  1. 标量
  2. 事件

If the option type is scalar, I need to show 2 input fields (alarm, reset) so that user can inset values in it and when the option type is event I need to hide 2 input fields (alarm, reset ) 以便用户无法在其中插入值。

When the option type is scalar, my form saves successfully but when option type is event form submit button not going to perform any action.

你能帮忙吗?

这是我的代码

HTML

<div class="row">
            <form method="post" action="/Home/SaveTriggers" class="form-inline">
                <div class="col-md-12">
                    <div class="col-md-2">
                        <select name="sourceId" class="select2" required>
                            @foreach (var i in ViewBag.opt)
                            {
                                <option value="@i.Id,@i.name,@i.type" id="opt">@i.name</option>

                            }
                        </select>
                    </div>

                    <div class="col-md-2">
                        <input id="alarm" name="alarm" type="text" placeholder="alarm" style="display:none" required />
                    </div>
                    <div class="col-md-2">
                        <input id="reset" name="reset" type="text" placeholder="reset" style="display:none" required />
                    </div>
                    <div class="col-md-1">
                        <input type="text" name="delay" id="delay" placeholder="delay" required />
                    </div>
                    <div class="col-md-3">
                        <select class="address2" name="action" id="select" required>
                            <option selected disabled>Select alarm action</option>
                            <option>John Doe, Switch on warning light</option>
                            <option>John Doe</option>
                            <option>Do anything</option>
                        </select>
                    </div>
                    <div class="col-md-2">
                        <button id="delete2" type="button" class="btn btn-default">Delete</button>
                    </div>


                    <button class=" add btn btn-primary" type="submit">Add</button>
                </div>
            </form>
        </div>

Jquery(因为我必须分别隐藏或显示警报或重置字段)

<script>
        $(document).ready(function () {
            $(".select2").change(function () {
                var text = $(".select2 option:selected").text();
                var val = $(".select2 option:selected").val();
                var res = val.split(",");
                var type = res[2];

                if (type == "scalar") {

                    document.getElementById("reset").style.display = "block";
                    document.getElementById("alarm").style.display="block"


                }
                else if(type=="event") {

                    document.getElementById("reset").style.display = "none";
                    document.getElementById("alarm").style.display = "none"
                    var alarm = document.getElementById("alarm");


                }
            });
        });
    </script>

【问题讨论】:

    标签: c# jquery asp.net-mvc-5


    【解决方案1】:

    问题很可能是您对alarm 和reset 的输入。 如果类型是event,它们是隐藏的并且很可能没有任何价值。但由于它们是必需的,因此在解决该错误之前不会提交表单。

    因此,您可以从这两个输入字段中删除 required 属性,使用默认值填充它们或在表单标签中使用 novalidate。这将禁用表单验证。您必须在 javascript 中手动验证您的输入。

    <div class="col-md-2">
        <input id="alarm" name="alarm" type="text" placeholder="alarm" style="display:none" />
    </div>
    <div class="col-md-2">
          <input id="reset" name="reset" type="text" placeholder="reset" style="display:none" />
    </div>
    

    【讨论】:

      【解决方案2】:
       <div class="col-md-2">
                          <input id="alarm" name="alarm" type="text" placeholder="alarm" style="display:none" required />
                      </div>
                      <div class="col-md-2">
                          <input id="reset" name="reset" type="text" placeholder="reset" style="display:none" required />
      

      由于您在输入元素中具有必需的属性,因此会触发验证并且不允许您提交表单。

      我建议您在提交时对 jquery 进行验证,而不是使用默认的 html5 验证

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-26
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 2015-11-19
        相关资源
        最近更新 更多