多组同名选择框=

发布于 2024-11-04 11:59:07 字数 2516 浏览 1 评论 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>

Right now I have three different select box sections, they are all states or provinces or territories, anyways...

My form is like this...

Country[]
States/Province[]

I change the default info in the state/province box by selecting different countries before it, such as USA(new york, florida) Canada(Albert, Nova Scotia) Mexico(Yukatan, Northren).

Each section of select boxes Mexico, USA, Canada all have the same name to submit into the database as a state/province. But, I believe its keeping my other selections of the other countries ie.. Select Alabama for USA and then Switch to Canada and pick Alberta, it tries to save both of them, how can I make it where only one will be chosen?

Thank you so much!

oh, here is some code below...

$(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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沉睡月亮 2024-11-11 11:59:07

问题是您必须禁用不想提交的控件。
用这个替换你的脚本,一切都会被修复:

   $(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。绝不。这也导致了一个问题,但现在它已经用我向您展示的代码修复了。

希望这有帮助,科里。干杯:)

The problem is that you must disable controls that don't want to be submitted.
Replace your script by this one, and everything will'be fixed:

   $(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('');
      }); 
   });

The main change in this code (besides it's a little shorter now), is that we're disabling non selected selects, so they are not submitted.

And and advice, don't use repeated id's in the same page. NEVER. This was causing a problem, also, but now it's fixed with the code i showed you.

Hope this helps, Cory. Cheers :)

自演自醉 2024-11-11 11:59:07

您应该只使用一个 中some 会在

您可以从 JSON 文件加载更改,您可以将其保存在服务器上。

You should just use a single <select id="state" name="state">, and load different set of options into that <select> each time some causes an onchange event on the <select id="country" name="country"> field.

You could load the changes from JSON files, which you can keep already prepared on your server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文