我有一个表格,我在其中显示数据库中的所有国家,根据所选国家填充状态,根据状态,使用jquery填充城市。一切都很好。问题是,当页面被提交和重新加载时,我只能保留国家,但不能保留州和城市选择框,因为它们是使用带有选择选项的onChange事件动态填充的。问题是在州和城市的选择框下,我什么都不做,因此当页面重新加载时,我不会得到用户输入的值。如有任何帮助,我们将不胜感激。
以下是代码
包含在php-中
<select name='country' onChange='selectCity(this.options[this.selectedIndex].value)'>
<option value='%'>Select Country</option>"
.$searchController->CreateCSCValues($searchController->GetCSCCountries(),'country').
"</select>
<select name='state' id='state_dropdown' onChange='selectState(this.options[this.selectedIndex].value)'>
<option value='%'>Select State</option>
</select>
<select name='city' id='city_dropdown'>
<option value='%'>Select City</option>
</select>
Javascript/jquery-------
function selectCity(country_id){
loadData('state',country_id);..........}
function selectState(state_id){
loadData('city',state_id);......... and then }
function loadData(loadType,loadId){
var dataString = 'loadType='+ loadType +'&loadId='+ loadId;
src="image/loading.gif" />');
$.ajax({D
type: "POST",
url: "get-State-City.php",
data: dataString,
cache: false,
success: function(result){
$("#"+loadType+"_loader").hide();
$("#"+loadType+"_dropdown").append(result);
}
});
在文件get-State-City.php中,传递loadtype和loadid,并根据loadtype访问State或City表,并在State/City下拉框下显示值。
我认为这比你想象的要容易。因为您的脚本只在onchange事件上运行,所以您可以预先填充dropbox,甚至不必对您的javascript进行任何更改。示例:
<select name='country' onChange='selectCity(this.options[this.selectedIndex].value)'>
<option value='%'>Select Country</option>
<?php if( /* country is given */ ): ?>
<?php foreach($countries as $country): ?>
<?php $selected = $country->id == $selected_country_id ? ' selected="selected" : ''; ?>
<option value="<?php echo $country->id; ?>"<?php echo $selected; ?>><?php echo $country->name; ?></option>
<?php endforeach; ?>
<?php else: ?>
<?php echo $searchController->CreateCSCValues($searchController->GetCSCCountries(),'country'); ?>
<?php endif; ?>
</select>
// the same for the other two dropdowns
现在,所有内容都已预填充(如果给定任何值(,onchange仍然有效。轻松搞定!:(