2010-10-28 18 views
10

È possibile modificare i valori di input su onbegin di ajax.beginform da modificare? Devo modificare i valori di alcuni dei campi di input dopo che il modulo è stato inviato. Ma anche se cambio i valori tramite js, lato server in request.form, sto ottenendo i vecchi valori che erano stati impostati inizialmente al momento dell'invio del modulo. Come ottenere i valori modificati in request.form?Modificare i valori di input registrati su onegin di ajax.beginform

Il blocco di codice è il seguente:

<% 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> 

Ora quando provo ad ottenere request.form["txtname"] lato server, sto ottenendo "gaurav" invece di "Gaurav Pandey".

+0

Si prega di scrivere buone domande, non possiamo dare una risposta diretta, se non inviare una domanda chiara – Nealv

+0

@Nealv: Ciao, ho modificato la domanda. Spero che sia d'aiuto. Grazie – gaurav

+1

Puoi fornire il codice che non funziona? – sheikhomar

risposta

8

Si verifica questo problema perché funBegin viene chiamato dopo che i dati del modulo sono stati serializzati. Da MSDN:

AjaxOptions.OnBegin Proprietà: Ottiene o imposta il nome della funzione JavaScript per chiamare immediatamente prima che la pagina viene aggiornata.

mi raccomanda di scrivere il proprio gestore di conferma:

<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

non ho voglia di andare al di fuori di MVC forma di movimentazione in modo presentazione ho risolto in modo diverso. Basta associare il gestore di clic del pulsante di invio del modulo. Fai il tuo valore di input giocherellando lì. L'onclick viene generato prima della serializzazione del modulo di MVC. L'onclick viene anche chiamato anche se il modulo viene inviato dall'utente che colpisce immette.

+1

Ho appena avuto lo stesso problema e questo mi ha salvato. – Joel

+1

@xanadont Questo non funziona per me, potresti postare i dettagli per favore nel caso ci sia qualcosa di specifico che deve essere fatto per farlo funzionare –

2

C'è un altro modo per farlo:.

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 
    } 
} 

Per significato dei parametri, vedere [http://api.jquery.com/jquery.ajax/]

0

$ ('# MyForm') submit() non funziona su IE. Se è presente una convalida, è possibile provare a creare un metodo di convalida falso per la raccolta dei dati del modulo.

come Jquery.validaton di seguito:

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