2011-04-29 91 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

相關問題