IE没有清除选择值

时间:2011-06-28 13:13:00

标签: javascript jquery internet-explorer

我正在使用一个简单的jquery来清除表单中select的内容,但在iE所有版本中,select都没有清除。它在FF中没问题,只是不在IE中执行。任何人都可以看到我在哪里出错?我已经发布了相关的代码部分。感谢

更新:

我想要实现的是当提交表单时,输入被清除,并且select /选项返回到默认状态,就像页面加载时一样。

回答它是否有助于其他人:$(“select”)。prop('selectedIndex',0);

/*Show submitted*/
//$(".done").show(500).slideUp(300).delay(800).fadeIn(400);
$(".done").html("<div id=\"boxSuccess\">Message sent successfully!</div><br />");
/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");
$(".done").fadeIn(4000).fadeOut(4000);

3 个答案:

答案 0 :(得分:6)

单选<select>元素无法真正被“清除”;其中的一些<option>必须显示。你可以做些什么来确保(例如)第一个选项显示是

$('select').get(0).selectedIndex = 0; // or $('select').prop('selectedIndex', 0);

编辑 - 看一下jQuery(1.5.2)源代码告诉我,当搜索到的值无法找到值时(或者,如果没有“value”属性,选项的文本),然后将“selectedIndex”设置为-1。快速的jsfiddle应该显示IE中的效果。

再次编辑 - quick test表示IE不会注意“selectedIndex”被设置为-1。

more Here是一个相关的jQuery错误报告。就个人选择下拉列表而言,我个人认为这不是一个真正的错误。对于多选我可以看到一个参数,尽管总是可以这样做:

$('select option').prop('selected', false);

取消选择多选中的所有内容。但是,对于单选元素不起作用,因为这并不是真的有意义。元素将始终导致其中一个选项的值与表单一起提交,因此除非其中一个选项的值为空,否则它实际上无法“清除”。

更多 - 如果您的某个选项具有“defaultSelected”属性(或属性),那么您可以将其作为所选选项:

$('select option').each(function() {
  this.selected = this.defaultSelected;
});

答案 1 :(得分:2)

因为您在我认为的对象集合上设置值。 我这样做:

$("select").add("input").each(function(){
     $(this).val("");
});

而不是

/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");

只有当你有一个value =''的选项时,这才有效(显然),这就是你要将select重置为的选项。像

 <option value=''>Select a value</option>

答案 2 :(得分:1)

$("select").val("");应仅设置为选定的""项作为其值。如果您想要实际删除这些项目,则需要$("select option").remove();

之类的内容