将表单ID传递给函数并在函数内提交

时间:2013-08-27 03:53:52

标签: javascript jquery asp.net-mvc

我希望能够将表单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的副本。

1 个答案:

答案 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);
            }
        });
    }