jquerystate&;城市选择列表在Firefox中无法正常工作,始终传递最后一个选择列表集的第一个值

jquerystate&;城市选择列表在Firefox中无法正常工作,始终传递最后一个选择列表集的第一个值,jquery,html,cross-browser,selecteditem,Jquery,Html,Cross Browser,Selecteditem,我似乎找不到解决这个问题的办法。我有一个州的选择列表,当选择一个州时,会显示与所选州相对应的另一个城市列表。然后,用户选择一个城市,提交表单,并通过POST方法传递所选城市的值 如果用户在已经选择了一个城市后决定更改状态,则应取消选择先前选择的城市,以便可以选择一个新城市,并且提交时仅传递其值 这在Chrome和Safari中可以正常工作,但在IE和Firefox中不能。IE和FF似乎正在传递最后显示的列表的第一个选项元素的值 对于这个问题的任何解决方案或变通办法都将不胜感激,因为我在这方面毫无

我似乎找不到解决这个问题的办法。我有一个州的选择列表,当选择一个州时,会显示与所选州相对应的另一个城市列表。然后,用户选择一个城市,提交表单,并通过POST方法传递所选城市的值

如果用户在已经选择了一个城市后决定更改状态,则应取消选择先前选择的城市,以便可以选择一个新城市,并且提交时仅传递其值

这在Chrome和Safari中可以正常工作,但在IE和Firefox中不能。IE和FF似乎正在传递最后显示的列表的第一个选项元素的值

对于这个问题的任何解决方案或变通办法都将不胜感激,因为我在这方面毫无进展

这是我到目前为止得到的

演示:

HTML(HTML5)


$('#'+$(this.val()).show()之后添加以下内容:,还有两行

 $(".city-select").each(function(){$(this).attr("name","");});
 $("#"+$(this).val()+" .input .city-select").attr("name", "city");

这是因为您有更多同名元素,我不认为firefox会在意您是否使用OPTGROUP标记将它们隐藏起来,这不是允许单个选项组处于未选择状态的好方法。它实际上是为将选项分类为集合而设计的。相反,如果不想默认为第一个选项,则需要一个空值选项。您应该将optgroup更改为选项,就像您在状态选择框中所做的那样:

<option value="">- Please Select Your City -</option>
为此:

$(".city-select").val("");

天才!非常感谢你!那很好用。进行一点验证,以确保做出了选择,并且我已经准备好了。我欠你一个人。
<option value="">- Please Select Your City -</option>
$(".city-select option").removeAttr("selected");
$(".city-select").val("");