2010-10-28 4 views
10

Можно ли изменить допустимые входные значения на onbegin из ajax.beginform? Мне нужно изменить значения некоторых полей ввода после отправки формы. Но даже если я изменяю значения через js, на стороне сервера в request.form, я получаю старые значения, которые были установлены первоначально во время отправки формы. Как получить измененные значения в request.form?Изменить введенные входные значения на onbegin ajax.beginform

Блок кода выглядит следующим образом:

<% 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 Пандей».

+0

Пожалуйста, напишите хорошие вопросы, мы не можем дать прямой ответ, если вы не размещаете четкий вопрос – Nealv

+0

@Nealv: Привет, я модифицировал вопрос. Надеюсь, поможет. Спасибо – gaurav

+1

Можете ли вы предоставить код, который не работает? – sheikhomar

ответ

8

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

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

+1

У меня была такая же проблема, и это спасло меня. – Joel

+1

@xanadont Это не работает для меня, не могли бы вы отправить подробности, пожалуйста, если есть что-то конкретное, что нужно сделать, чтобы заставить его работать –

2

Существует еще один способ сделать это:.

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

0

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

как Jquery.validaton ниже:

jQuery.validator.addMethod("fakeMethod", function (value, element) { 
       YOUR DOM CODE HERE!!! 
       return true; 
      }, ""); 
Смежные вопросы