我正在使用一个简单的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);
答案 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();