修改ajax.beginform onbegin上的已发布输入值

Gau*_*dey 11 asp.net-mvc

可以贴在输入值onbeginajax.beginform修改?我必须在提交表单后修改某些输入字段的值.但即使我通过js更改值,在服务器端request.form我也会获得最初在表单提交时设置的旧值.如何在request.form中获取修改后的值?

代码块如下:

<% using(Ajax.BeginForm("action", "controller",
     new AjaxOptions{onbegin="funBegin",oncomplete="funComplete"})){ 
%>

<input type="text" id="txtName" name="txtName" value="gaurav"/>
<input type="text" name="txtAge" value="26"/>
<input type="submit" value="click here" />

<% } %>

<script type="text/javascript">
    function funBegin() {
        $("#txtName").val("gaurav pandey");
    }
    function funBegin(result) {
        $("#divParent").html(result.get_data());
    }
</script>
Run Code Online (Sandbox Code Playgroud)

现在当我试图进入request.form["txtname"]服务器端时,我得到了"gaurav"而不是"gaurav pandey".

xan*_*ont 16

我不想超出MVC的表单提交处理,所以我以不同的方式解决了这个问题.只需绑定到表单的提交按钮的单击处理程序即可.你的输入值是否在那里摆弄.onclick在MVC的表单序列化之前被触发.即使表单是由用户点击提交的,也会调用onclick enter.

  • @xanadont这对我不起作用,你能否发布详细信息,以防万一需要做些具体工作才能让它正常工作 (2认同)

she*_*mar 11

您有这个问题,因为funBegin在表单数据被序列化后调用.来自MSDN:

AjaxOptions.OnBegin属性:获取或设置在页面更新之前立即调用的JavaScript函数的名称.

我建议你编写自己的提交处理程序:

<form id="myform" action="/Home/MyAction">
    <input type="text" id="txtName" name="txtName" value="gaurav" />
    <input type="submit" value="Submit" />
</form>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#myform').submit(function() {
            $("#txtName").val("gaurav pandey");

            var form = $(this);
            var url = form.attr('action');
            var formData = form.serialize();
            $.post(url, formData, function(result) {
                // Do something with result
            });

            return false;
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)


Ser*_*ahé 6

还有另一种方法可以做到这一点:

function funBegin(jqXHR, settings) {
    // before POST - change whatever posted value you want and then 
  // serialize again your form supposedly identified here by form

        settings.data = form.serialize();

  // the advantage is when you arrive here, the form validators have already been executed
  // and you know you have valid values - so you can post
    }
}
Run Code Online (Sandbox Code Playgroud)

参数含义见[http://api.jquery.com/jquery.ajax/]