Подтвердить что ты не робот

Измените введенные значения ввода onbegin ajax.beginform

Можно ли изменить допустимые входные значения на onbegin of ajax.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>

Теперь, когда я пытаюсь получить request.form["txtname"] на стороне сервера, я получаю "gaurav" вместо "gaurav pandey".

4b9b3361

Ответ 1

У вас возникла эта проблема, потому что 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>

Ответ 2

Мне не хотелось выходить за рамки обработки заявок на MVC, поэтому я решил это по-другому. Просто привязывайтесь к обработчику нажатия кнопки формы. Сделайте там свое входное значение. Onclick запускается до сериализации формы MVC. Onclick также вызывается, даже если форма отправлена ​​пользователем, нажав enter.

Ответ 3

Есть и другой способ:

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/]

Ответ 4

$('# myform'). submit() не будет работать в IE. Если есть какая-либо проверка, вы можете попытаться создать метод поддельной проверки для сбора данных формы.

как JQuery.validaton ниже:

jQuery.validator.addMethod("fakeMethod", function (value, element) {
                YOUR DOM CODE HERE!!!
                return true;
            }, "");