2011-04-29 31 views
0

现在我有三个不同的选择框的部分,他们都是州或省或地区,反正...多套选择框具有相同名称=

我的形式是这样的...

国家[] 国家/省[]

我选择之前不同的国家,如美国(纽约,佛罗里达)加拿大(阿尔伯特,新斯科舍省),墨西哥(例如更改州/省对话框中的默认信息Yukatan,Northren)。

选择框的每个部分墨西哥,美国,加拿大都具有相同的名称作为州/省提交到数据库中。但是,我相信它保留了其他国家的其他选择,即选择阿拉巴马州为美国,然后切换到加拿大和选择艾伯塔省,它试图挽救他们两个,我怎么能使它只有一个将被选择?

非常感谢!

哦,这里是下面一些代码...

$(document).ready(function(){ 
$("#country").change(function() 
{ 


$("#usStates").hide(); 
$("#caStates").hide(); 
$("#mexStates").hide(); 

if ($("#country").val() == 'United States'){ 
$("#usStates").show(); 
$("#caStates").hide(); 
$("#mexStates").hide(); 
$("#state1").val(''); 
} 
if ($("#country").val() == 'Canada'){ 
$("#caStates").show(); 
$("#usStates").hide(); 
$("#mexStates").hide(); 
$("#state1").val(''); 
} 
if ($("#country").val() == 'Mexico'){ 
$("#mexStates").show(); 
$("#caStates").hide(); 
$("#usStates").hide(); 
$("#state1").val(''); 
} 

}); }); 

<div id="caStates" style="display: none;"> 
<div class="leftform">State/Province:</div> 
<div class="rightform"><select class="select" style="width: 150px;" id="state1" name="state" size="1"> 
<option value=""></option> 
<option value="Alberta">Alberta</option> 
<option value="New Brunswick">New Brunswick</option> 
<option value="Nova Scotia">Nova Scotia</option> 
<option value="Prince Edward Island">Prince Edward Island</option> 
<option value="British Columbia">British Columbia</option> 
<option value="Newfoundland">Newfoundland</option> 
<option value="Ontario">Ontario</option> 
<option value="Quebec">Quebec</option> 
<option value="Manitoba">Manitoba</option> 
</select></div><br clear="all"/> 
</div> 

<div id="mexStates" style="display: none;"> 
<div class="leftform">State/Province:</div> 
<div class="rightform"><select class="select" style="width: 150px;" id="state1" name="state" size="1"> 
<option value=""></option> 
<option value="Baja California">Baja California</option> 
<option value="Central Mexico">Central Mexico</option> 
<option value="Gulf of Mexico">Gulf of Mexico</option> 
<option value="Northern Mexico">Northern Mexico</option> 
<option value="Mexico Pacific Coast">Mexico Pacific Coast</option> 
<option value="Yucatan">Yucatan</option> 
</select></div><br clear="all"/> 
</div> 

回答

1

问题是,您必须禁用不想提交的控件。 通过这个替换你的脚本,一切will'be固定:

$(document).ready(function(){ 
     $("#country").change(function(){ 
     //We first disable all, so we dont submit data for more than 1 country 
     $("#usStates, #caStates, #mexStates").hide().find("#state1").attr("disabled", true); 
     var $divSelectedStates; 
     if ($("#country").val() == 'United States') 
      $divSelectedStates = $("#usStates");      
     if ($("#country").val() == 'Canada') 
      $divSelectedStates = $("#caStates");   
     if ($("#country").val() == 'Mexico') 
      $divSelectedStates = $("#mexStates"); 
     //We now enable only for the selected country   
     $divSelectedStates.show().find("#state1").attr("disabled", false).val(''); 
     }); 
    }); 

此代码中的主要变化(除了它有点短了),就是我们禁用非选择的选择,所以他们没有提交

和建议,不要在同一页面使用重复的ID。决不。这也造成了一个问题,但现在它已经解决了我向你展示的代码。

希望这有助于Cory。欢呼:)

1

你应该只使用一个单一的<select id="state" name="state">,和组不同的选项,每次一些导致上<select id="country" name="country">领域的onchange事件加载到<select>

您可以从JSON文件加载更改,您可以在服务器上保留这些更改。

+0

现在我有3组选择设置为显示:无,当他们选择一个国家时,它设置适当的显示()。根据以前的选择框,使用onchange为了加载不同的选择框的任何提示? – Visin 2011-04-29 08:20:21

相关问题