Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Jquery 在选择元素中隐藏选项,不在IE中工作?_Jquery_Internet Explorer_Select - Fatal编程技术网

Jquery 在选择元素中隐藏选项,不在IE中工作?

Jquery 在选择元素中隐藏选项,不在IE中工作?,jquery,internet-explorer,select,Jquery,Internet Explorer,Select,可能重复: 正如你在下面看到的,我有两个选择元素。第一个有两个值,1.4和1.7。根据选择的选项,我希望禁用第二个select元素中的某些选项。它在chrome上运行得非常好,但IE是个婊子(像往常一样!) 你知道怎么了吗 <p> <label style="width: 155px; display: inline-block;">Height</label> <select name="height"> <

可能重复:

正如你在下面看到的,我有两个选择元素。第一个有两个值,1.4和1.7。根据选择的选项,我希望禁用第二个select元素中的某些选项。它在chrome上运行得非常好,但IE是个婊子(像往常一样!)

你知道怎么了吗

<p>
    <label style="width: 155px; display: inline-block;">Height</label>
    <select name="height">
        <option value="1.4">1.4</option>
        <option value="1.7">1.7</option>
    </select>
</p>
<p>
    <label style="width: 155px; display: inline-block;">Amount</label>
    <select name="slanor">
        <option class="four" value="2">2</option>
        <option class="four seven" value="3">3</option>
        <option class="seven" value="4">4</option>
    </select>
</p>


<script>
$(document).ready(function() {
    check();

    $('select[name=height]').change(function() {
        check();
    });

    function check() {
        var slanor = $('select[name=slanor]');
        var currHeight = $('select[name=height]').val();

        if(currHeight == '1.4') {
            slanor.find('option').hide();
            slanor.find('.four').show();
        } else {
            slanor.find('option').hide();
            slanor.find('.seven').show();
        }
    }
});
</script>

高度
1.4
1.7

数量 2. 3. 4.

$(文档).ready(函数(){ 检查(); $('select[name=height]')。更改(函数(){ 检查(); }); 函数检查(){ var slanor=$('select[name=slanor]'); var currHeight=$('select[name=height]')。val(); 如果(currHeight='1.4'){ slanor.find('option').hide(); slanor.find('.four').show(); }否则{ slanor.find('option').hide(); slanor.find('.seven').show(); } } });
IE中不存在
选择中隐藏的
选项的概念。您必须手动删除并重新添加条目,这可能会带来一些不便

另一个解决方案是也禁用元素:

slanor.find(option).hide().prop('disabled', true);
这将在所有支持该选项的浏览器中隐藏该选项,但在IE中禁用该选项,这意味着该选项仍然可见,但在视觉上与其他选项不同,并且不可选择

然而:如果您的问题与您所描述的完全一样,并且您的脚本只有两个不同的选项,最简单的解决方案可能是
隐藏
完全显示
两个不同的下拉列表,具体取决于选择的选项。

调用.hide()在jQuery中,向元素添加display:none。我怀疑用这种方式隐藏选项是否是标准HTML

您可以使用以下代码:

slanor.empty();
if (currHeight == '1.4') {
    slanor.append($('<option'>).val('2').text('2'));
    slanor.append($('<option'>).val('3').text('3'));
}
else {
    slanor.append($('<option'>).val('3').text('3'));
    slanor.append($('<option'>).val('4').text('4'));
}
slanor.empty();
如果(currHeight='1.4'){

slanor.append($('选项标记不支持css显示属性。show()/hide()就是这样做的。您最好根据需要删除并重新创建选项。或者,我想您可以将它们附加到另一个隐藏对象,并在需要完全成形的选项时将其拉回来

所以你会有类似的

$("option").appendTo($("#myhiddenselect"));
$(".four").appendTo($("#myvisibleselect"));

什么不起作用?它是否获得了正确的高度值?(运行
console.log(currHeight)
以找出原因。)请停止标记您的标题。您在这里已经快两年了!嗯,是的,这很有效。我尝试将其设置为禁用,但在IE 7/6中似乎不起作用。我希望至少支持IE 7。我想剩下的唯一选项是有两个选择框。谢谢!您可以在这篇文章中找到所需的答案:-