为什么IE没有取消选择带有$(element).val();的选项?



尽管其他浏览器看起来不错,但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应该防止它。

感谢您的任何建议。

尝试

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

取消选择所有选项(演示)。或者,您可以等价地使用.prop("selectedIndex", -1),而不是each循环(也可以与.val('')一起使用)。

btw,根据.val()的文档,您可以通过选项的数组选择(或null而不是空数组):

.val([]);

(demo)

而不是设置select的值,您可以选择所有选项,然后使用以下方式将prop更改为false

.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/

最新更新