如何在提交按钮上调用preventDefault()之后提交表单ASP.NET我试图在我的表单上调用提交函数但是没有任何我被卡住了?

时间:2016-07-29 17:42:18

标签: asp.net

这是我的表单,如果我没有找到任何带有JSON结果方法的对象,我想调用Create ActionResut:

@using (Html.BeginForm("Create", "InspekcijskeKontrole", FormMethod.Post, new { id = "forma1"}))

{     @ Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Inspekcijska kontrola</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.InspekcijskoTijeloId, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("InspekcijskoTijeloId", null,"Odaberite inspekcijsko tijelo.....", new { @class = "form-control", @id="kombo3" })
            @Html.ValidationMessageFor(model => model.InspekcijskoTijeloId, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.ProizvodId, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("ProizvodId", null,"Odaberite proizvod.....", new { @class = "form-control", @id="kombo4" })
            @Html.ValidationMessageFor(model => model.ProizvodId, "", new { @class = "text-danger" })
        </div>
    </div>

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

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

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

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="button" id="btnSave" value="Unesi" class="btn btn-success"/>
        </div>
    </div>
</div>

这是我想要在提交表单之前执行的方法我阻止使用e.preventDefault()进行提交。此方法检查数据库中是否存在某些内容但是如何返回sumbit,如何取消此e.preventDefault()如果没有值来执行提交事件而不是点击?

$("#btnSave").click(function(e){
    e.preventDefault();

    var zahtjev = $.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val());

    zahtjev.done(function (data) {

        if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) {
            $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) {

                if (ime != null) {
                    $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena");
                    $("#modalni1").modal({ backdrop: "static" });
                }
            });

        }
    });
    zahtjev.fail(function (greska) {
        $("#sp1").text(greska.responseText);
    });

});

2 个答案:

答案 0 :(得分:0)

你是否在jQuery文档就绪函数中进行了连接?像

这样的东西
$(function() {
   $("#btnSave").click(function(e){
     e.preventDefault();
     ...
});

我想知道你的点击处理程序是否没有被触发,因为连接click事件的JavaScript在元素实际存在之前运行。在这种情况下,jQuery将无错误地运行,但事件不会触发,您将获得默认行为。

答案 1 :(得分:0)

您可以将input类型更改为button

<input type="button" id="btnSave" value="Unesi" class="btn btn-success"/>

然后使用form以表格ID

手动提交.submit()

类似的东西:

$("#btnSave").click(function(e){
    e.preventDefault();

    var zahtjev = $.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val());

    zahtjev.done(function (data) {

        if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) {
            $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) {

                if (ime != null) {
                    $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena");
                    $("#modalni1").modal({ backdrop: "static" });
                }
            });

        }

        $(#yourFormidHere).submit(); //if you want to submit here for example

    });
    zahtjev.fail(function (greska) {
        $("#sp1").text(greska.responseText);
    });

});

希望这会有所帮助。如有任何问题,请告诉我。谢谢