2009-07-28 10 views
2

Ich habe ein Problem mit diesem jquery Code unten. Bitte geben Sie mir Rat oder Code, wenn Sie helfen könnenjQuery-Land auswählen, wenn das Land bereits gespeichert ist?

So habe ich eine Länder-Dropdown-Liste, eine Status-Dropdown-Liste für USA und ein Status-Eingabefeld für Nicht-USA-Benutzer.

Wenn Sie USA aus der Länderliste wählen versteckt es das othstate Feld, wenn Sie irgendein anderes Land dann die USA wählen Sie es versteckt den USA statelist und zeigt das Eingabefeld

So weit so gut, jetzt hier ist, wo Das Problem tritt auf. Dieser Code eignet sich hervorragend für ein Anmeldeformular, jedoch nicht zum Bearbeiten eines Benutzerstandorts.

Wenn ein Benutzer diese Daten bereits in mysql/php gespeichert hat, wenn sie die Bearbeitungsseite besuchen, wird es nicht sehr gut funktionieren. 1 Lösung, die ich dachte, ist es, 2 Javascript-Funktionen zu haben und PHP zu verwenden, um das richtige zu analysieren je nach Land, das sich mit dem Problem befasst, wenn sie anderes Land als die USA gespeichert haben, würde es laden mit Beispiel England ausgewählt aber würde USA zeigen States statt State Eingabefeld und Laster.

Es gibt immer noch ein großes Problem. Wenn Sie ein Nicht-USA-Land auswählen, erhalten Sie dann das Eingabefeld für andere Daten. Sie können dann Daten eingeben. Sagen wir nun, dass ich dies getan habe und einige Daten eingegeben habe und dann USA aus der Länderliste auswählt und lass mich einen Staat wählen.

Das Problem damit ist im Backend mit PHP Ich überprüfe, ob die Texteingabe leer ist oder der Zustand leer ist, dieser Fehler würde es beiden ermöglichen, Daten zu halten.

Ich hoffe, das Sinn gemacht und ich würde Ihre Meinung lieben und

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    locationlist(); 
}); 

function locationlist() { 
    $('#othstate').hide(); 
    $('#country').change(function() {   
     var val = $(this).val(); 
    if (val == 223) { 
     $('#state').val('').show(); 
     $('#othstate').hide(); 
    }else { 
     $('#state').val('').hide(); 
     $('#othstate').show(); 
    } 
    }); 
} 
</script> 

<form method="post" name="form1"> 
    <select style="background-color: #ffffa0" name="country" id="country"> 
     <option>Select Country</option> 
     <option value="223" selected="selected">USA</option> 
     <option value="224">Canada</option> 
     <option value="225">England</option> 
     <option value="226">Ireland</option> 
    </select> 
<div id="state"> 
    <select style="background-color: #ffffa0" name="state" id="state"> 
     <option>Select State</option> 
     <option value="1">Florida</option> 
     <option value="2">New York</option> 
     <option value="3" selected="selected">Georgia</option> 
     <option value="4">California</option> 
    </select> 
</div> 
<div id="othstate"><input type="text" name="othstate" id="othstate" value="" class="textBox"></div> 

Antwort

2

Statt nur versteckt die Eingabe/Auswahl, deaktivieren Sie es bitte helfen. Dies verhindert, dass das Wertformular auf Ihrem Server veröffentlicht wird.

function locationlist() { 
    $('#othstate').hide().attr("disabled", "disabled"); 
    $('#country').change(function() {   
     var val = $(this).val(); 
     if (val == 223) { 
     $('#state').val('').show().removeAttr("disabled"); 
      $('#othstate').hide().attr("disabled", "disabled"); 
     }else { 
      $('#state').val('').hide().attr("disabled", "disabled"); 
      $('#othstate').show().removeAttr("disabled"); 
     } 
    }); 
} 
+0

Ich werde es ausprobieren, danke, nur eine kurze Frage, ich sehe, dass Sie deaktiviert zu allen Feldern hinzugefügt haben, sollten einige nicht wieder aktiviert werden oder nicht? Ich weiß nicht wirklich, wovon ich rede – JasonDavis

+0

Sorry, ich habe gerade das removeAttr ich fühle mich dumm lol – JasonDavis

0

Ich las zwei Fragen (klären, wenn ich falsch)

1) mit Anmeldeseite, PHP beiden Felder ausgefüllt empfangen könnte.

1> arbeitet Joel Potters Vorschlag.


2) Code für eine Bearbeitungsseite Wiederverwendung

2> es klingt wie Sie PHP benötigen Standardwerte für die Eingänge einzufügen. Abgesehen davon bin ich mir nicht sicher, ob es andere Probleme auf hohem Niveau gibt - es ist nur eine Frage der Implementierung.

Optionen Ich denke an:

clientseitige = js Code Umfrage haben (über Ajax) Server für Information und dann diese Werte einfügen.

serverseitig = PHP kann nur direkt die Werte für die Texteingabe eingeben. Wie für Dropdown-Menüs, ich bin mir nicht sicher, wie man eine Standard-Auswahl in html < wählen Sie> Tag, aber PHP konnte js-Code einfügen, um den richtigen Wert beim Laden der Seite, oder PHP konnte Standard-Wahl auch die erste gegeben.

+0

Hallo, das ist bereits in Kraft, php hat die ausgewählten Optionen auf der Seite, Problem ist, wenn sie England als Land gespeichert haben Auch wenn der php England als ausgewählt parst, würden die USA-Staaten immer noch auf einer Bearbeitungsseite erscheinen, da sich der Status-Dropdown-Befehl gegenüber dem Status-Input NUR ändert, wenn Sie die Länderliste physisch ändern – JasonDavis

Verwandte Themen