为什么IE不能取消选择$(element).val('');?

时间:2012-10-22 12:58:13

标签: javascript jquery internet-explorer

虽然其他浏览器看起来很好,但IE7对我的10行javascript并不友好。

可以在此处找到所有(小)代码: http://jsfiddle.net/7nGd9/

$(function() {
    $('#prepareSpecificProgressModal')
        .each(function(index, modal) {
            var
                modal = $(modal),
                form  = $('#myform');

            form.on('change', 'select', function(){
                 var node = $(this);
                    node
                        .closest('form')
                        .find('select').not(this)
                        .each(function(i, element){
                             element.selectedIndex = -1;
                        });
            });
        });
});

我正在使用$(element).val('');来重置选项的选择,但它在IE7下无效。基本上它允许在3选择中进行多项选择,即使有JS应该阻止它。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:2)

您可以选择所有选项并将select更改为prop,而不是设置false的值,而不是:{/ p>

.find('select[id!='+node.attr('id')+'] option').prop('selected', false);

http://jsfiddle.net/9NPf5/

..或两者同时:

.find('select[id!='+node.attr('id')+'] option').prop('selected', false).parent().val('');

http://jsfiddle.net/n3jCs/

答案 1 :(得分:2)

尝试

.each(function(i, element) {
    element.selectedIndex = -1;
})

取消选择所有选项(Demo)。或者,代替each循环,您可以等效地使用.prop("selectedIndex", -1)(也可以使用.val('')。)

顺便说一下,根据docs of .val(),您可以传递一个选项数组(或null而不是空数组):

.val([]);

Demo