2012-04-13 4 views
2

Ich habe ein Formular, mit dem Benutzer die Eingaben (mit jQuery) in eine beliebige Reihenfolge verschieben können. Für das unten stehende Formular könnte ein Benutzer "fieldD" gefolgt von "fieldA", "fieldB", "fieldC" wünschen.Sagen Sie die Reihenfolge der Felder von einem von

Beispiel Form:

<form id="myForm" method="post"> 
    <input type="submit"> 
    <table> 
     <tr><td><input type="text" name="fieldA"></td></tr> 
     <tr><td><input type="text" name="fieldB"></td></tr> 
     <tr><td><input type="text" name="fieldC"></td></tr> 
     <tr><td><input type="text" name="fieldD"></td></tr> 
    </table> 
</form> 

Was ist der beste Weg, um die Bestellung der Benutzer wählen, zu erfassen, wenn sie das Formular abgeschickt?

+0

Hat eine dieser Antworten helfen? – iambriansreed

+0

Welche serverseitige Sprache verwenden Sie? – iambriansreed

+0

@iambriansreed Classic ASP ist die serverseitige Sprache – Ojen

Antwort

0

Ich nahm Ideen aus den Antworten und verwendete jQuery, um meine Tabelle zu durchlaufen, um die Reihenfolge zu bestimmen. Wenn ich es tatsächlich implementiere, werde ich die Reihenfolge bestimmen (indem ich meine Tabelle durchquere), wenn das Formular abgeschickt wird.

Hier ist ein jsfiddle, die das Konzept demonstriert:

http://jsfiddle.net/kq8tT/6/

0

Sie könnten diese Eingabe-Werte in einem Array und die Anzahl der Feldnamen speichern:

<form id="myForm" method="post"> 
    <input type="submit"> 
    <input type="text" name="field[1]" /> 
    <input type="text" name="field[2]" /> 
    <input type="text" name="field[3]" /> 
    <input type="text" name="field[4]" /> 
</form> 

Die Feldnamen nach jeder vollständigen Sortier Aktion erhalten neu geschrieben müssen.

// this will result in a PHP-array, e.g. 
$_POST['field'][0] 

foreach($_POST['field'] as $indexAsSetViaJs => $fieldValue) { 
    // process values in desired order 
} 
1

Durch die Spezifikationen ist die Reihenfolge der Felder in den Formulardaten nicht definiert. In der Praxis ist es tendenziell die textliche Reihenfolge, aber insbesondere wenn die Reihenfolge clientseitig geändert wird, würde ich nicht darauf zählen.

Der beste Ansatz ist wahrscheinlich, ein Array von Feldnamen zu erstellen und zu ändern, wenn die Reihenfolge geändert wird. Wenn es sinnvoll ist, die Seite ohne clientseitige Skripterstellung zu verwenden, ist es am sichersten, ein ausgeblendetes Feld mit den Feldern in ihrer textlichen Reihenfolge einzufügen und den Inhalt dynamisch durch Daten aus dem Array zu ersetzen, wenn die Formulardaten gesendet werden .

0

In der Vergangenheit habe ich folgendes getan:

<form id="myForm" method="post"> 
    <input type="submit"> 
    <table> 
     <tr><td><input type="text" name="fieldA"></td></tr> 
     <tr><td><input type="text" name="fieldB"></td></tr> 
     <tr><td><input type="text" name="fieldC"></td></tr> 
     <tr><td><input type="text" name="fieldD"></td></tr> 
    </table> 
    <input type="hidden" name="fields" value="fieldA,fieldB,fieldC,fieldD" /> 
</form> 

nämlich ein verstecktes Feld mit Feldnamen in der richtigen Reihenfolge hinzugefügt.

Verwandte Themen