Bir jquery ülke / devlet liste ile yardımcı

3 Cevap php

Bu jquery kodu yapmak için daha iyi bir yolu var mı?

Currently I have to use PHP to insert the starting position of the jquery code.
The code is for a country/state list.

Bir kullanıcı ABD'yi alıyorsa o zaman bir devlet açılan liste herhangi başka bir ülke seçilirse, o zaman farklı bir metin kutusu göstermek ve açılır listesini gizlemek, bunun altındadır.

Bir kullanıcı bir ülke zaten veritabanına kaydedilir ve bu değerini düzenlemek için bir sayfada varsa Şimdi, o zaman, ilk olarak gösterilmesi gerektiğini göstermek için PHP kullanmak ABD eyaletleri veya devlet girişi ya var.

Bir kullanıcı işaretleri kadar, varsayılan olarak ABD devlet listesini devlet listesi yerine bir devlet girişi değişti eğer olmayan bir usa ülkeyi seçerseniz, gösterildiği zaman.

Ben mantıklı umuyoruz. nihai hedefi her nasılsa tamamen javascript / jquery yapmak değil, herhangi bir ayar için PHP güvenmek

country dropdown list
<select name="country" id="country" class="textarealong  signup_good"/>
<option value=1001>Choose a Country</option>
<option value=238>Zimbabwe</option>
...
</select>

USA state dropdown list
<select name="usstate" id="usstate" class="textarealong  signup_good"/>
<option value=1001>Choose a State</option>
<option value=238>Florida</option>
...
</select>

NON-USA state INPUT box
<input type="text" id="othstate" name="othstate" id="othstate" value="" class="textarealong  signup_good" maxlength="100">


<?PHP
//fix jquery country/state list based on there current saved country/state
if($_SESSION['member_info']['country'] == 224){
    //$jquerycountry = "$('#othstate').hide().attr(\"disabled\", \"disabled\");";
    $jquerycountry = "$('#othstate').hide().val('');";
}else{
    $jquerycountry = "$('#usstate').hide().attr(\"disabled\", \"disabled\");";
}
?>
<script>
$(document).ready(function() {
    locationlist();
});

function locationlist() {
    <?PHP echo $jquerycountry; // includes country jquery code from above ?>
    $('#country').change(function () {
    	var val = $(this).val();
    	if (val == 224) {
    		$('#usstate').val('').show().removeAttr("disabled");
    		$('#othstate').hide().val('');
    	} else {
    		$('#usstate').val('').hide().attr("disabled", "disabled");
    		$('#othstate').show().removeAttr("disabled");
    	}
    });
}
</script>

3 Cevap

Belki bu sizin için iyi bir çözüm olabilir:

HTML seçimi ve girdi alanları:

<select name="country" id="country" class="textarealong  signup_good"/>
  <option value=1001>Choose a Country</option>
  <option value=238>Zimbabwe</option>
  <option value=239>Rwanda</option>  
</select>

USA state dropdown list
<select name="usstate" id="usstate" class="textarealong  signup_good"/>
  <option value=1001>Choose a State</option>
  <option value=238>Florida</option>
</select>

<input id="otherstate"/>

Sonra bazı 'ready'-büyü ile jQuery kısmı: otherstate alanını gizlemek ve Greg zaten belirtildiği gibi yükleme üzerinde değişiklik olayı tetikler. Bu ülke zaten sayfa yük seçildiyse doğru form alanı seçilmiş olacak, emin kılan:

<script type="text/javascript">
  $(document).ready(function () {
    $("#otherstate").hide();
    $("#country").trigger("change");
  });

  $("#country").change(function () {
    if ($("#country").val() != '1001') {
      $("#usstate").hide();
      $("#otherstate").show();
    } else {
      $("#usstate").show();
      $("#otherstate").hide();    
    }
  });
</script>

Bu size yardımcı olacağını umuyor! ;)

Sadece ready() Bu yapabilir miyiz?

loctionlist();
$('#country').trigger('change');

(Tamamen farklı bir açıdan ona geliyor :)

Burada tarif ettiğin tüm seçenekleri / olanakları ile, tüm açılan çıkışlar hurda ve sadece bir otomatik tamamlama metin alanını kullanmak akıllıca olabilir.