2013-07-23 11 views
68

C'è un modo per usare javascript e JQuery per aggiungere alcuni campi aggiuntivi da inviare da un modulo HTTP usando il POST?Come aggiungere campi aggiuntivi al modulo prima di inviare?

voglio dire:

<form action="somewhere" method="POST" id="form"> 
    <input type="submit" name="submit" value="Send" /> 
</form> 

<script type="text/javascript"> 

    $("#form").submit(function(eventObj) 
     { 
      // I want to add a field "field" with value "value" here 
      // to the POST data 

      return true; 
     } 
</script> 
+2

possibile duplicato di [jQuery - aggiungi parametri aggiuntivi su submit (NON ajax)] (http://stackoverflow.com/questions/2530635/jquery-add-additional-parameters-on-submit-not-ajax) – Marijn

risposta

99

Yes.You può provare con alcuni params nascosti.

$("#form").submit(function(eventObj) { 
     $('<input />').attr('type', 'hidden') 
      .attr('name', "something") 
      .attr('value', "something") 
      .appendTo('#form'); 
     return true; 
    }); 
+18

'. appendTo (this) 'probabilmente sarebbe meglio. – jcuenod

+1

@jcuenod original 'appendTo ('# form')' è molto meglio, perché tale approccio consente di inviare un altro modulo con valori da questo. – Andremoniy

+3

Dovrai aggiungere qualche logica in più per evitare di accumulare questi input con ogni invio. – amos

30

Prova questo:

$('#form').submit(function(eventObj) { 
    $(this).append('<input type="hidden" name="field_name" value="value" /> '); 
    return true; 
}); 
+0

Ho bisogno di aggiungere un campo di file dinamicamente. Ho provato ad avere type = file, e il valore anche come file (sto usando WebKitDirectory, quindi ottengo effettivamente gli oggetti del file), tuttavia non sembra mai passarlo. Il testo di input viene comunque sempre passato. Per favore aiutatemi! –

+0

La mia risposta preferita a causa dell'uso di 'this' al posto del ridondante' # form' – rinogo

8

è possibile aggiungere un hiddeninput con qualsiasi valore è necessario inviare:

$('#form').submit(function(eventObj) { 
    $(this).append('<input type="hidden" name="someName" value="someValue">'); 
    return true; 
}); 
6
$('#form').append('<input type="text" value="'+yourValue+'" />'); 
-1

Questo funziona:

var form = $(this).closest('form'); 

form = form.serializeArray(); 

form = form.concat([ 
    {name: "customer_id", value: window.username}, 
    {name: "post_action", value: "Update Information"} 
]); 

$.post('/change-user-details', form, function(d) { 
    if (d.error) { 
     alert("There was a problem updating your user details") 
    } 
}); 
+0

Sì, ma non esiste un reindirizzamento alla pagina dei risultati. – omikron

+1

questo dovrebbe funzionare: '$ ('body'). Append (form); $ (modulo) .submit(); ' –

Problemi correlati