首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改ajax.beginform的onbegin上的posted输入值

问修改ajax.beginform的onbegin上的posted输入值
EN

Stack Overflow用户
提问于 2010-10-28 22:17:08
回答 3查看 15.7K关注 0票数 15

在ajax.beginform的onbegin上发布的输入值可以修改吗?在提交表单后,我必须修改一些输入字段的值。但是,即使我通过js更改了这些值,在request.form的服务器端,我也会得到最初在表单提交时设置的旧值。如何在request.form中获取修改后的值?

代码块如下:

代码语言:javascript
复制
<% 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>

现在,当我在服务器端尝试获取request.form["txtname"]时,我得到的是"gaurav“而不是"gaurav pandey”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-31 20:52:26

您会遇到这个问题,因为funBegin是在表单数据序列化之后调用的。来自MSDN:

AjaxOptions.OnBegin属性:获取或设置要在紧接页更新之前调用的JavaScript函数的名称。

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

代码语言: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>
票数 12
EN

Stack Overflow用户

发布于 2014-12-16 16:44:28

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

代码语言:javascript
复制
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
    }
}

有关参数的含义,参见 [http://api.jquery.com/jquery.ajax/]

票数 6
EN

Stack Overflow用户

发布于 2014-12-19 06:40:39

$('#myform').submit()在IE上不起作用。如果有验证,您可以尝试创建一个假的验证方法来收集表单数据。

就像下面的Jquery.validaton:

代码语言:javascript
复制
jQuery.validator.addMethod("fakeMethod", function (value, element) {
                YOUR DOM CODE HERE!!!
                return true;
            }, "");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4043765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档