Formulareingabefelder mit jQuery abrufen?

Lesezeit: 4 Minuten

Formulareingabefelder mit jQuery abrufen
Wassil

Ich habe ein Formular mit vielen Eingabefeldern.

Wenn ich das Sendeformular-Ereignis mit jQuery abfange, ist es möglich, alle Eingabefelder dieses Formulars in einem assoziativen Array zu erhalten?

  • Es ist eine gute Frage; Tatsächlich finde ich es wirklich seltsam, dass jQuery keine Funktion hat, die genau dies tut. Es gibt Funktionen, um die Formulardaten in zwei verschiedenen Formaten zu erhalten, aber nicht das bequemste, wissen Sie, Skripterstellung … (Vielleicht sollte .val() ein solches Array zurückgeben, wenn es auf einem Formularelement aufgerufen wird?)

    – Lukas Maurer

    18. März 11 um 0:19 Uhr

1643915106 920 Formulareingabefelder mit jQuery abrufen
Nickf

$('#myForm').submit(function() {
    // get all the inputs into an array.
    var $inputs = $('#myForm :input');

    // not sure if you wanted this, but I thought I'd add it.
    // get an associative array of just the values.
    var values = {};
    $inputs.each(function() {
        values[this.name] = $(this).val();
    });

});

Dank des Tipps von Simon_Weaver gibt es hier eine andere Möglichkeit, dies zu tun, indem Sie verwenden serializeArray:

var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
    values[field.name] = field.value;
});

Beachten Sie, dass dieses Snippet fehlschlagen wird <select multiple> Elemente.

Es scheint, dass die neue HTML 5-Formulareingaben arbeite nicht mit serializeArray in jQuery-Version 1.3. Dies funktioniert in Version 1.4+

Formulareingabefelder mit jQuery abrufen
Lance Rushing

Zu spät zur Party bei dieser Frage, aber das ist noch einfacher:

$('#myForm').submit(function() {
    // Get all the forms elements and their values in one step
    var values = $(this).serialize();

});

  • Das ist wirklich die beste Antwort. Es behält sogar alle Array-Formatierungen bei, die Sie möglicherweise für Ihre Eingabefelder haben. Ich glaube nicht, dass die Antwort von nickf Ihre Datenstrukturen tatsächlich intakt halten würde, wenn sie beispielsweise mit Zend_Form gebildet würden, wo Sie ein Feld hätten[something] und Feld[something_else] wie die Namen der Eingänge … zumindest semantisch kann ich nicht sehen, wie es wäre …

    – msumme

    27. Januar 10 um 3:34 Uhr

  • Gemäß den jQuery-API-Dokumenten, .serialize() (api.jquery.com/serialize) fügt alle Elemente des Formulars in eine einzelne Zeichenfolge ein, die zum Anhängen an eine URL in einer Abfragezeichenfolge bereit ist, und ahmt im Wesentlichen eine GET-Formularanforderung nach. Dies würde nicht das erreichen, was die Antwort von nickf erreicht.

    – Christoph Parker

    02.03.10 um 18:22 Uhr


  • Wissenswert: .serialize() funktioniert auch nur mit Formularelementen. So $('form select').serialize() werden die Daten nur für Auswahlen serialisiert.

    – antitoxisch

    1. Juni 12 um 10:31 Uhr

  • Anstatt zu wiederholen $('#myForm'), verwenden Sie $(this).

    – Jimothy

    25. Juli 14 um 19:21 Uhr

  • Ich habe dies verwendet, aber mein Formular hat verschiedene versteckte Elemente (nicht versteckt wie im Typ, ich meine visuell), die ich nicht in die Serialisierung aufnehmen möchte.

    – Jemand

    29. April 16 um 08:14 Uhr

Der jquery.form Plugin kann dabei helfen, wonach andere suchen, was zu dieser Frage führt. Ich bin mir nicht sicher, ob es direkt das tut, was Sie wollen oder nicht.

Es gibt auch die serializeArray Funktion.

1643915106 395 Formulareingabefelder mit jQuery abrufen
Maleachi

Manchmal finde ich es sinnvoller, eine nach der anderen zu bekommen. Dafür gibt es das:

var input_name = "firstname";
var input = $("#form_id :input[name=""+input_name+""]"); 

Hier ist eine andere Lösung, auf diese Weise können Sie alle Daten über das Formular abrufen und in einem serverseitigen Aufruf oder so verwenden.

$('.form').on('submit', function( e )){ 
   var form = $( this ), // this will resolve to the form submitted
       action = form.attr( 'action' ),
         type = form.attr( 'method' ),
         data = {};

     // Make sure you use the 'name' field on the inputs you want to grab. 
   form.find( '[name]' ).each( function( i , v ){
      var input = $( this ), // resolves to current input element.
          name = input.attr( 'name' ),
          value = input.val();
      data[name] = value;
   });

  // Code which makes use of 'data'.

 e.preventDefault();
}

Sie können dies dann mit Ajax-Aufrufen verwenden:

function sendRequest(action, type, data) {
       $.ajax({
            url: action,
           type: type,
           data: data
       })
       .done(function( returnedHtml ) {
           $( "#responseDiv" ).append( returnedHtml );
       })
       .fail(function() {
           $( "#responseDiv" ).append( "This failed" );
       });
}

Hoffe, das ist für jeden von euch von Nutzen 🙂

1643915107 848 Formulareingabefelder mit jQuery abrufen
QUentin

$('#myForm').bind('submit', function () {
  var elements = this.elements;
});

Die Elementvariable enthält alle Eingaben, Auswahlen, Textbereiche und Feldsätze innerhalb des Formulars.

1643915107 683 Formulareingabefelder mit jQuery abrufen
sparsh turkan

Dieses Stück Code wird funktionieren
Geben Sie anstelle des Namens die E-Mail-Adresse Ihres Formularfelds ein

$(document).ready(function(){
  $("#form_id").submit(function(event){
    event.preventDefault();
    var name = $("input[name="name"]",this).val();
    var email = $("input[name="email"]",this).val();
  });
});

.

759010cookie-checkFormulareingabefelder mit jQuery abrufen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy