2012-07-25 21 views
52

Ich benutze eine jquery Vorlage, um dynamisch mehrere Elemente auf der gleichen Seite zu generieren. Jedes Element sieht so aus:Jquery erhalten Formularfeld Wert

Ich möchte Jquery verwenden, um das Formular beim Senden zu verarbeiten. Ich möchte auch die Formularwerte auf ihre vorherigen Werte zurücksetzen, wenn etwas schiefgehen sollte. Meine Frage ist Wie kann ich den Wert von Eingabefeld mit Jquery bekommen? Zum Beispiel kann ich den Wert der div mit der Klasse „etwas“, indem Sie

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

In ähnlicher Weise erhalten, möchte ich in der Lage sein, den Wert der Textbox abzurufen. Gerade jetzt habe ich versucht,

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

aber es scheint nicht

+3

Ausnahmsweise könnte schlicht Javascript einfacher sein: '$ ('input') [ 0] .form.FirstName.value' greift auf den Wert des Feldes zu. – cnlevy

Antwort

103

Sie haben value attribute zu nutzen, um ihren Wert

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

Versuch zu bekommen -

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

@curiouspanda: Nur ein Tipp. Wenn die "name" -Werte eindeutig sind, müssen Sie $ ('# DynamicValueAssignedHere') nicht verwenden. Gehe einfach direkt mit $ ('input [name = "FirstName"]'). Val().Ich bevorzuge immer noch Ids, um mit Komponenten umzugehen. – davidbuzatto

+2

@davidbuzatto - Name Werte sind nicht eindeutig. Nur die ID für das äußerste Div ist eindeutig. Dipaks Lösung funktionierte jedoch. –

39

zu arbeiten, kann es viel einfacher sein als das, was Sie tun.

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

Ich kann keine ID für das Feld verwenden, da meine Seite mehrere Formulare mit denselben Elementen enthalten kann (ich verwende jquery repeater temp Lates) –

+0

@curiouspanda: Ok, so können Sie dies mit Dipaks Ansatz tun. Auch wenn ich die Repeater-Templates verwende, denke ich, dass Sie mit eindeutigen IDs arbeiten können, vielleicht indem Sie für jede Feldgruppen-Komponenten-ID ein Präfix setzen. – davidbuzatto

+0

@curiouspanda haben dynamische IDs etwas gemeinsam? – undefined

1

, wenn Sie die ID der Eingänge wissen müssen Sie nur diese verwenden:

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

werden dadurch alle Werte aller Textfelder erhalten. Sie können Methoden wie children, firstchild, etc verwenden, um in. $ ('form [name = form1] input [type = text]') Einfachere IDs für Targeting-Elemente zu verwenden, aber wenn es rein dynamisch ist, können Sie Holen Sie sich alle Eingabewerte und durchlaufen Sie sie dann mit JS.

5

Ein alternativer Ansatz, ohne für das Feld html suchen:

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

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – 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() 
Verwandte Themen