2017-10-13 2 views
0

Ich habe einige Eingabefelder mit dem gleichen Namen wie Arrays in einer Schleife.Werte von Eingabefeldern mit dem gleichen Namen erhalten propily formatiert

Etwas wie:

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

Jetzt möchte ich die Werte aller Eingänge mit dem Namen „Fahrzeug“ bekommen

Der Ausgang ich sollte etwas sein wollen wie:

[0] => 'amount' => (for example) 5 
     'name' => BMW 
[1] => 'amount' => (for example) 15 
     'name' => Audi 

und so weiter.

Wie bekomme ich das? Ich habe mehrere Dinge ausprobiert.

Etwas wie:

var vehicle; 
    $('input[name="product"]').each(function() { 
     vehicle.push($(this).val()); 
    }); 

Aber diese und ähnliche Lösungen, die ich versucht habe, haben für mich nicht funktioniert.

Dank vier Ihre Hilfe und Entschuldigung für mein schlechtes Englisch!

+0

Der Betrag sollte der 'Wert' Ihrer Eingabe sein, wie dieser' ' – SubjectDelta

+0

Are schaffst du deine Eingabe mit PHP? – SubjectDelta

+0

ja ich erstelle es mit PHP. Und der Name und die Menge sind zwei verschiedene Dinge. Es ist nicht wie es gibt einen bestehenden Namen, den ich einen Betrag Wert geben möchte. Ich möchte einen neuen Namen mit einem neuen Wert erstellen. Ich habe einen Fehler in meiner Frage gemacht. Alle diese Eingabefelder haben den gleichen $ i-Wert. Im Beispiel sind alle "1". – dwdawdawdaw

Antwort

0

Sie die Eingabe mit dieser erstellen:

<?php 
for($i = 0; $i < 3; $i++) { 
    print('<div class="vehicle">'); 
    print('<input name="amount">'); 
    print('<input name="name">'); 
    print('</div>'); 
} 
?> 

Und dann ...

var vehicle = []; 
 
$('div.vehicle').each(function() { 
 
    var name = $(this).children('input[name="name"]').val(); 
 
    var amount = $(this).children('input[name="amount"]').val(); 
 
    vehicle.push({ name: name, amount: amount }); 
 
}); 
 

 
console.log(vehicle);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="BMW"> 
 
    <input type="number" name="amount" value="5"> 
 
</div> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="Audi"> 
 
    <input type="number" name="amount" value="3"> 
 
</div> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="Ford"> 
 
    <input type="number" name="amount" value="6"> 
 
</div>

0

Sie alle Fahrzeug mit Namen bekommen können, enthalten die Zeichenfolge mit Wahl *:

var vehicle = []; 
$('input[name*="Audi"]').each(function() { 
    vehicle.push($(this).val()); 
}); 
+0

Dieser Weg gab mir den folgenden Fehler: Uncaught TypeError: Kann Property 'push' von undefined --- nicht lesen und eine andere Sache, meinst du 'input [name * = "vehicle"]' - richtig? – dwdawdawdaw

+0

Ja richtig! Erstellen Sie Ihr variables Fahrzeug als Array. Bitte versuche mein Update. –

+0

@dwdawdawdaw ist diese Lösung Ihren Fehler zu lösen? –

0
You can try this: 

<input name="titles[]"> 
<input name="titles[]"> 
​<button>submit</button>​​​​​​​​​​​​​​​​​​​​​​​ 

With this jQuery 

// click handler 
function onClick(event) { 
    var titles = $('input[name^=titles]').map(function(idx, elem) { 
    return $(elem).val(); 
    }).get(); 

    console.log(titles); 
    event.preventDefault(); 
} 

// attach button click listener on dom ready 
$(function() { 
    $('button').click(onClick); 
}); 
+0

gut das funktioniert nur auf halbem Weg. Es gibt 6 Felder. Jetzt ist es gibt mir die Werte wieder in einem einfachen Array: So: [ "1", "2", "3", "4", "5", "6"] Aber ich will es so: [0] = Menge => "1", Preis => '2' [1] = Menge => "3", Preis => '4' – dwdawdawdaw

+0

@dwdawdawdaw Wenn Sie diese Art von Ergebnis verwenden möchten, verwenden Sie Filter() Methode in Javascript –

+0

können Sie mir ein Beispiel geben, wie Sie es in diesem Codeausschnitt filtern? Der jQuery Doc. nur gibt mir CSS-Lösungen, so bin ich ein wenig verwirrt darüber – dwdawdawdaw

Verwandte Themen