【问题标题】:Jquery - Button isn't disabling after being clickedJquery - 单击后按钮未禁用
【发布时间】:2020-06-29 18:20:50
【问题描述】:

我试图在单击按钮后禁用它,但它不起作用我在网上查看了多种解决方案,但目前没有任何解决方案适合我,所以我想知道我做错了什么。

这是我的文件,我在其中尝试了@SLePort 答案中推荐的解决方案

 @model PIC_Program_1._0.Models.JobOrder

@{
    ViewBag.Title = "Change Status";
}

<script type="text/javascript">

    $('form').submit(function (e) {
        e.preventDefault();
        $('input[type="submit"]').prop("disabled", true);
    })
 </script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

@using PIC_Program_1._0.Models
<h2>Change Status</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    @Html.Raw(IGT.Format(WebUtility.HtmlDecode(Convert.ToString(Html.ValidationSummary(true, "", new { @class = "text-danger" })))))

    <input type="hidden" name="origin" value="@ViewBag.Origin" />

    <div class="form-horizontal">
        <h4>Work Order</h4>
        <br />
        <p><b><u>Order Details:</u></b></p>

        @{
            if (Model.Status == JOStatus.Pending && Model.hasBeenStarted == false && Model.parentJobOrderID <= 0)
            {
                <div class="form-group">
                    @Html.LabelFor(model => model.dynamicOrder, htmlAttributes: new { @class = "control-label col-md-2" })

                    <div class="col-md-10">
                        @Html.EditorFor(model => model.dynamicOrder, new { @class = "form-control" })
                        @Html.ValidationMessageFor(model => model.dynamicOrder, "", new { @class = "text-danger" })
                    </div>
                </div>



            }
            else
            {
                @Html.HiddenFor(model => model.dynamicOrder)
            }
        }


        <div class="form-group">
            @Html.LabelFor(model => model.Status, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.Status, new SelectList(ViewBag.statusList, "value", "text"), new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Status, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Details, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextAreaFor(model => model.Details, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Details, "", new { @class = "text-danger" })
            </div>
        </div>

        <form>
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Save" class="btn" />
                </div>
            </div>
        </form>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

这是我尝试过的一些 jquery 方法

<script type="text/javascript">

    $('form').submit(function () {
        $(':submit').prop("disabled", "disabled");
    })

   $('input[type=submit]').one('submit', function () {
        $(this).attr('disabled', 'disabled');
    });

    $('#form-group').one('submit', function () {
        $(this).find('input[type="submit"]').attr('disabled', 'disabled');
    });

 </script>

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript c# html jquery asp.net-mvc


    【解决方案1】:

    尝试添加preventDefault() 以防止按钮在页面重新加载后消失,并将disabled 属性设置为true 值:

    $('form').submit(function(e) {
      e.preventDefault();
      $('input[type="submit"]').prop("disabled", true);
    })
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form>
      <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
          <input type="submit" value="Save" class="btn" />
        </div>
      </div>
    </form>

    【讨论】:

    • 是的,所以很奇怪为什么它在我的系统中不起作用。也许只需要清理/重建
    • 请注意我添加的&lt;form&gt;。您需要在代码中添加一个才能使其正常工作。
    • 是的,我添加了它,但仍然没有运气。这没有任何意义
    • 我在整个文件中添加了
    • 我只是将输入更改为 &lt;input type="submit" value="Save" class="btn" onClick="this.form.submit();this.disabled=true;"/&gt;,然后它就起作用了。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2019-06-19
    相关资源
    最近更新 更多