【发布时间】:2009-09-04 21:03:34
【问题描述】:
有没有更好的方法来做这个 jquery 代码?
目前我必须使用PHP来插入jquery代码的起始位置。
该代码用于国家/州列表。
如果用户选择美国,则其下方会出现一个州下拉列表,如果选择了任何其他国家/地区,则它将显示不同的文本输入框并隐藏下拉列表。
现在,如果用户已经将一个国家/地区保存到数据库中,并且他们在页面上编辑该值,那么我必须使用 PHP 来显示应该首先显示哪个国家,无论是美国州还是州输入。
当用户注册时,默认情况下会显示美国州列表,只有当州列表更改为州输入时,他们才选择非美国国家/地区。
希望我说得有道理。最终目标是以某种方式使其完全 javascript/jquery 而不是依赖 PHP 来设置任何东西
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>
【问题讨论】: