我希望能够将表单ID传递给某个方法,然后该方法可以将表单提交给该表单所具有的操作网址。
以下是其中一种表格的代码
@using ( Html.BeginForm("jQueryPost", "Home",null, FormMethod.Post, new { id="FormPost1" }))
{
@Html.TextBoxFor(x => x.Name) @Html.ValidationMessageFor(x => x.Name)
<br />
@Html.TextBoxFor(x => x.LastName) @Html.ValidationMessageFor(x => x.LastName)
<br />
@Html.TextBoxFor(x => x.Age) @Html.ValidationMessageFor(x => x.Age)
<br />
<br />
<input type=button id="Postbtn1" value="Post Method 1 " />
<input type=button id="Postbtn2" value="Post Method 2 " />
}
这是脚本
<script>
function ReusableJqueryPost()
{ }
ReusableJqueryPost.prototype.CommonPost = function (formId) {
//alert('alert 2: ' + formId);
var fid = $("#" + formId);
alert('alert 3 : ' + fid);
$("#" + formId).submit(function (e) {
alert('alert 4');
e.preventDefault();
var validated = $(fid).valid();
alert('form validated here');
if (validated) {
$.ajax({
type: 'POST',
url: $(fid).attr('action'),
data: $(fid).serialize(),
accept: 'application/json',
error: function (xhr, status, error) {
alert(xhr.responseText );
},
success: function (response) {
alert(response.Name);
}
});
}
});
$('#Postbtn1').click(function () {
alert('alert 1 : ');
var r = new ReusableJqueryPost();
r.CommonPost('FormPost1');
});
$('#Postbtn2').click(function () {
alert('alert 1 : ');
var r = new ReusableJqueryPost();
r.CommonPost('FormPost2');
});
</script>
我只能到达警报3 。当我点击此行$("#" + formId).submit(function (e)
时,它会失败。
有关如何实现这一目标的任何想法?对于这个例子,我只放下了Form1。 Form2是Form1的副本。
答案 0 :(得分:1)
问题而不是提交您正在注册提交处理程序的表单,没有必要在常用帖子中使用$("#" + formId).submit(function (e) {
ReusableJqueryPost.prototype.CommonPost = function (formId) {
//alert('alert 2: ' + formId);
var fid = $("#" + formId);
alert('alert 3 : ' + fid);
var validated = $(fid).valid();
alert('form validated here');
if (validated) {
$.ajax({
type: 'POST',
url: fid.attr('action'),
data: fid.serialize(),
accept: 'application/json',
error: function (xhr, status, error) {
alert(xhr.responseText );
},
success: function (response) {
alert(response.Name);
}
});
}