Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE未清除选择值_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript IE未清除选择值

Javascript IE未清除选择值,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我使用一个简单的jquery来清除表单中select的内容,但是在iE的所有版本中,select并没有被清除。在FF中没有问题,只是在IE中没有做。有人能看到我在这方面哪里出了问题吗?我已经发布了代码的相关部分。谢谢 更新: 我试图实现的是,当提交表单时,输入被清除,选择/选项返回到默认状态,就像加载页面时一样 回答是否对其他人有帮助:$(“选择”).prop('selectedIndex',0) /*显示已提交*/ //$(“.done”).show(500)、slideUp(300)、del

我使用一个简单的jquery来清除表单中select的内容,但是在iE的所有版本中,select并没有被清除。在FF中没有问题,只是在IE中没有做。有人能看到我在这方面哪里出了问题吗?我已经发布了代码的相关部分。谢谢

更新:

我试图实现的是,当提交表单时,输入被清除,选择/选项返回到默认状态,就像加载页面时一样

回答是否对其他人有帮助:$(“选择”).prop('selectedIndex',0)

/*显示已提交*/
//$(“.done”).show(500)、slideUp(300)、delay(800)、fadeIn(400);
$(“.done”).html(“消息已成功发送!
”); /*清除输入值*/ $(“输入”).val(“”); /*清除slelect值*/ $(“选择”).val(“”); $(“.done”).fadeIn(4000)。fadeOut(4000);
单个选择
元素不能真正“清除”;必须显示其中的一些
。您可以做什么来确保(例如)显示第一个选项

$('select').get(0).selectedIndex = 0; // or $('select').prop('selectedIndex', 0);
edit—查看jQuery(1.5.2)源代码可以知道,当无法找到搜索到的值作为选项的值(或者,如果没有“value”属性,则为文本)时,它会将“selectedIndex”设置为-1。一个快速的jsfiddle应该显示它在IE中的作用

再次编辑-a表示IE不注意“selectedIndex”设置为-1

更多是一个相关的jQuery错误报告。就个人而言,我不认为这是一个真正的错误的情况下,一个单一的选择下拉列表。对于multi-select,我可以看到一个参数,但始终可以执行以下操作:

$('select option').prop('selected', false);
取消多选中的所有选择。但是,对于单个选择元素不起作用,因为这同样没有意义。元素将始终导致其一个选项的值随表单一起提交,因此除非其中一个选项的值为空,否则无法“清除”

更重要的是,如果您的一个选项具有“defaultSelected”属性(或属性),则可以使用以下选项使其成为选定选项:

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

$(“选择”).val(“”)
只应设置为选中的值为
”的项目。如果要实际删除这些项,则需要类似于
$(“选择选项”).remove()的内容

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

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

/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");
只有当您有一个值为“”的选项并且这是您要将select重置为的选项时,此选项才有效(显然)。像

 <option value=''>Select a value</option>
选择一个值

空字符串真的是
下的
标记的值吗?@pointy抱歉,你明白你的评论吗?感谢将
值设置为“”意味着,“使值为“”的
成为当前选择。“.val()方法已经知道如何对集合进行操作;换句话说,它内置了一个“each()”循环。因此,这种方法是不必要的。我在IE中尝试了这种方法,效果很好。我总是在IE上使用该代码,没有任何问题。这完全删除了列表。我只需要在提交表格时出示死亡名单。此工程为$(“输入”).val(“”);在IE$(“select”).val(“”)中;这不适用于.IIRC,
element.selectedIndex=-1
应该适用于IE的所有受支持版本。(编辑:确实如此-)@Andy E是的,我同意,尽管我已经有一段时间没有尝试过了。我正在启动我的IE虚拟机以检查:-)@Andy E嗯,它在IE8中对我不起作用。。。尝试使用多个
并确保没有一个具有空值,如@pointy这似乎是多选择元素上不同浏览器的问题。我的印象是,在我运行的jQuery1.6中,现在有了这个元素的标准?嗯,还需要进一步挖掘。一定是答案。我不敢相信这个问题仍然存在。有一个简单的解决方法——自己设置“selectedIndex”。
 <option value=''>Select a value</option>