2012-07-25 16 views
52

Sto utilizzando un modello jquery per generare dinamicamente più elementi sulla stessa pagina. Ogni elemento assomiglia a questoValore campo modulo Jquery

<div id ="DynamicValueAssignedHere"> 
    <div class="something">Hello world</div> 
    <div class="formdiv"> 
     <form name="inpForm"> 
      <input type="text" name="FirstName" /> 
      <input type="submit" value="Submit" /> 
     </form> 
    </div> 
</div> 

Vorrei utilizzare Jquery per elaborare il modulo su submit. Vorrei anche ripristinare i valori del modulo ai valori precedenti se qualcosa dovesse andare storto. La mia domanda è Come posso ottenere il valore della casella di input usando Jquery? Ad esempio, posso ottenere il valore del div con classe "qualcosa" da fare

var something = $(#DynamicValueAssignedHere).children(".something").html(); 

In modo simile, voglio essere in grado di recuperare il valore della casella di testo. In questo momento, ho provato

var text = $(#DynamicValueAssignedHere).children(".formdiv").findnext('input[name="FirstName"]').val(); 

ma non sembra funzionare

+3

Per una volta, javascript pianura potrebbe essere più facile: '$ ('input') [ 0] .form.FirstName.value' accederà al valore del campo – cnlevy

risposta

103

Devi usare value attribute per ottenere il suo valore

<input type="text" name="FirstName" value="First Name" /> 

prova -

var text = $('#DynamicValueAssignedHere').find('input[name="FirstName"]').val(); 
+6

@curiouspanda: solo un suggerimento. Se i valori "nome" sono univoci, non è necessario utilizzare $ ('# DynamicValueAssignedHere'). Basta andare direttamente usando $ ('input [name = "FirstName"]'). Val().Continuo a preferire l'utilizzo degli id ​​per gestire i componenti. – davidbuzatto

+2

@davidbuzatto - I valori dei nomi non sono univoci. Solo l'ID per il div più esterno è unico. La soluzione di Dipaks ha funzionato comunque. –

39

Può essere molto più semplice di quello che state facendo.

HTML:

<input id="myField" type="text" name="email"/> 

JavaScript:

// getting the value 
var email = $("#myField").val(); 

// setting the value 
$("#myField").val("new value here"); 
+0

Non posso usare un ID per il campo perché la mia pagina può contenere più moduli con gli stessi elementi (sto usando il ripetitore jquery temp –

+0

@curiouspanda: Ok, quindi puoi farlo usando l'aproach di Dipaks. Anche usando i modelli di ripetitori, penso che tu possa lavorare con ID univoci, magari impostando un prefisso per ogni ID del componente del set di campi. – davidbuzatto

+0

@curiouspanda Gli ID dinamici hanno qualcosa in comune? – undefined

1

se si conosce l'id degli ingressi solamente bisogno di usare questo:

var value = $("#inputID").val(); 
2
var textValue = $("input[type=text]").val() 

questo otterrà tutti i valori di tutte le caselle di testo. Puoi usare metodi come child, firstchild, ecc per affinare. Come per il modulo $ ('form [nome = form1] input [tipo = testo]') ID più facili da usare per gli elementi di targeting ma se è puramente dinamico puoi ottenere tutti i valori di input quindi eseguire il ciclo continuo con JS.

5

Un approccio alternativo, senza cercare il campo HTML:

var $form = $('#' + DynamicValueAssignedHere).find('form'); 
var formData = $form.serializeArray(); 
var myFieldName = 'FirstName'; 
var myFieldFilter = function (field) { 
    return field.name == myFieldName; 
} 
var value = formData.filter(myFieldFilter)[0].value; 
0

$("form").submit(function(event) { 
 
     ///First Field Value 
 
     var firstfield_value = event.currentTarget[0].value; 
 
    ///Second Field Value 
 
     var secondfield_value = event.currentTarget[1].value; 
 
     
 
     alert(firstfield_value); 
 
     alert(secondfield_value); 
 
     event.preventDefault(); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action="" method="post" > 
 
<input type="text" name="field1" value="value1"> 
 
<input type="text" name="field2" value="value2"> 
 
</form>

+1

Anche se questo snippet di codice può risolvere la domanda, [compresa una spiegazione] (// meta.stackexchange.com/questions/114762/explaining-entually-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. Cerca anche di non affollare il tuo codice con commenti esplicativi, in quanto ciò riduce la leggibilità sia del codice che delle spiegazioni! – FrankerZ

0
// for getting the value from input type text 
var value = $("input[type=text]").val(); 
// for getting the value from by input type name 
var textValue = $("input[name=text]").val() 
Problemi correlati