.Submit() 不工作
.Submit() not working
我有一个像下面这样的框架
@using (Html.BeginForm("Preapprove", "Preapproval", FormMethod.Post, new { name = "form1", id = "form1", enctype = "multipart/form-data", @class = "form-horizontal" }))
{
......
<input name="submit" type="button" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />
}
并且在 jquery 中,我在单击按钮 ID Sub
时提交此表单
$(document).ready(function () {
$('#Sub').click(function (e) {
var error_flag = 0;
if (d_row_count == 1) {
error_flag = 1;
}
else if (d_row_count > 1) {
if (code == null || code.trim() == '') {
error_flag = 1;
}
else if (s_row_count == 1) {
error_flag = 1;
}
}
if (error_flag != 1) {
alert("submitting");
$("#form1").submit();
}
});
当所有验证都通过后,error_flag 将为 0,它进入 if 条件并给我警报 "Submitting" 但表单未提交。
代码中缺少什么吗?
您需要将输入按钮的名称从 "submit" 更改为其他名称。具有名为 "submit" 的元素会导致表单的提交方法不再有效,这意味着无法通过 JavaScript 提交表单(至少,不容易)。
这是因为名为 "submit" 的输入元素可以通过其名称引用,如下所示:form1.submit
。即,输入元素作为表单对象的 属性 添加,属性 名称是输入元素的名称。这基本上隐藏了表单原型上的 submit
函数。
我在上面说 "not easily",因为以下仍然有效(至少在 Firefox 中):
HTMLFormElement.prototype.submit.call($("#form1")[0]);
或者,您可以捕获表单的本机提交事件,然后将 JavaScript 代码集中在表单的提交方法周围,而不是按钮的单击事件周围。
该按钮需要具有 submit
类型(单击具有 type=submit
的按钮自然会触发该事件)。
<input name="submit" type="submit" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />
然后是你的JavaScript。
$(document).ready(function () {
$("#form1").submit(function (e) {
if (d_row_count == 1) {
return;
}
else if (d_row_count > 1) {
if (code == null || code.trim() == '') {
return;
}
else if (s_row_count == 1) {
return;
}
}
// Thre were no errors!
alert("submitting");
// If you want to override the form submit method completely, use...
// e.preventDefault();
});
});
我有一个像下面这样的框架
@using (Html.BeginForm("Preapprove", "Preapproval", FormMethod.Post, new { name = "form1", id = "form1", enctype = "multipart/form-data", @class = "form-horizontal" }))
{
......
<input name="submit" type="button" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />
}
并且在 jquery 中,我在单击按钮 ID Sub
时提交此表单$(document).ready(function () {
$('#Sub').click(function (e) {
var error_flag = 0;
if (d_row_count == 1) {
error_flag = 1;
}
else if (d_row_count > 1) {
if (code == null || code.trim() == '') {
error_flag = 1;
}
else if (s_row_count == 1) {
error_flag = 1;
}
}
if (error_flag != 1) {
alert("submitting");
$("#form1").submit();
}
});
当所有验证都通过后,error_flag 将为 0,它进入 if 条件并给我警报 "Submitting" 但表单未提交。
代码中缺少什么吗?
您需要将输入按钮的名称从 "submit" 更改为其他名称。具有名为 "submit" 的元素会导致表单的提交方法不再有效,这意味着无法通过 JavaScript 提交表单(至少,不容易)。
这是因为名为 "submit" 的输入元素可以通过其名称引用,如下所示:form1.submit
。即,输入元素作为表单对象的 属性 添加,属性 名称是输入元素的名称。这基本上隐藏了表单原型上的 submit
函数。
我在上面说 "not easily",因为以下仍然有效(至少在 Firefox 中):
HTMLFormElement.prototype.submit.call($("#form1")[0]);
或者,您可以捕获表单的本机提交事件,然后将 JavaScript 代码集中在表单的提交方法周围,而不是按钮的单击事件周围。
该按钮需要具有 submit
类型(单击具有 type=submit
的按钮自然会触发该事件)。
<input name="submit" type="submit" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />
然后是你的JavaScript。
$(document).ready(function () {
$("#form1").submit(function (e) {
if (d_row_count == 1) {
return;
}
else if (d_row_count > 1) {
if (code == null || code.trim() == '') {
return;
}
else if (s_row_count == 1) {
return;
}
}
// Thre were no errors!
alert("submitting");
// If you want to override the form submit method completely, use...
// e.preventDefault();
});
});