【发布时间】:2019-08-06 15:43:17
【问题描述】:
这可能是一个简单的问题,但我找不到解决方法。
当我执行这个时:-
$('#save_results').on("click", function () {
$('#formSaveQuotationPrepDetail').submit();
});
一切正常。但是当我这样做时:-
$('#save_results').on("click", function () {
$('#formSaveQuotationPrepDetail').submit(function (e) {
var result = '@TempData["StatusMsg"]';
e.preventDefault();
if (result == 'Success') {
alert("Saved Successfully.");
}
})
});
这是我的代码:-
[HttpPost]
public ActionResult SaveQuotePreparation(QuotationPreparationEntity quoteP)
{
string result = objManager.SaveQuotePreparation(quoteP);
if (!string.IsNullOrEmpty(result) && (result == GeneralConstants.Inserted || result == GeneralConstants.Updated))
{
//Payment Gateway
data = GeneralConstants.SavedSuccess;
TempData["StatusMsg"] = "Success";
}
return new JsonResult { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
我的 HTML 是一个很长的代码,我把它写得很短只是为了便于理解:-
@using (Html.BeginForm("SaveQuotePreparation", "Technical", FormMethod.Post, new { @id = "formSaveQuotationPrepDetail" }))
{
<div class="row">
<form>
<div class="col-md-12 text-left">
<div class="row text-center">
<div class="col-md-4">
<div class="form-group text-left">
<label class="control-label ">
Quote Number
</label>
@Html.DropDownListFor(m => m.QuoteNo, new SelectList(@ViewBag.ListQuoteNo, "DataStringValueField", "DataTextField", Model.QuoteNo),
new
{
@class = "form-control requiredValidation",
@id = "QuoteNo",
@data_inneraction = "validationCall",
@onfocusout = "return ValidateRequiredFieldsOnFocusOut(this)"
})
<span class="HideValidMsg">Please Select QuoteNo</span>
</div>
</div>
<div class="col-md-4">
<div class="form-group text-left">
<label class="control-label">
Product Line
</label>
@Html.DropDownListFor(m => m.ProductLine, new SelectList(@ViewBag.ListProdGrp, "DataStringValueField", "DataTextField", Model.ProductLine),
new
{
@class = "form-control requiredValidation",
@id = "ProductLine",
@onfocusout = "return ValidateRequiredFieldsOnFocusOut(this)",
ng_model = "ProductLine",
ng_change = "GetProductLineDetails(ProductLine)"
})
<span class="HideValidMsg">Please Select ProductLine</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 pt-4 text-center">
<button type="button" class="btn btn-success btn-sm" data-dismiss="modal" id="save_results">Save</button>
@*<input style="font-size:18px" type="button" class="btn btn-success btn-sm" data-dismiss="modal" id="save_results" value="Save" />*@
<input style="font-size:18px" type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" value="Close" />
</div>
</div>
</form>
事件不会在点击时触发。我没有收到任何错误或任何东西。
我想在提交时返回 JSON 数据并将其显示为屏幕上的警报。
【问题讨论】:
-
“不工作”版本只是在单击
#save_results时添加了一个submit处理程序。click处理程序中的任何内容都不会实际提交表单。 -
第一个版本代码块引发事件,第二个代码块是事件的监听器。它们不是同一件事。根据您想要在此处实现的确切目标,您可能需要将两者都包含在逻辑中的不同位置。
-
第一个调用提交,第二个在点击时绑定一个事件处理程序.....两个完全不同的动作。而且没有结果,所以不确定你在期待什么。
-
见鬼,the documentation 有一个完整的例子。
标签: javascript jquery asp.net-mvc razor