2013-03-08 34 views
1

我有6个选择标签。选择标签.change - > if value == 3 - >删除attr'disabled'的另一个选择

FIRST:用值= 2,3,4,5
SECOND & THIRST选择:选择 不具有属性 '禁用'
FORTH,第五,第六:选择具有属性 '禁用'

我需要:

如果选择值== 3 - > FORTH如果选择除去属性 '禁用' 值== 4 - > FORTH &第五删除属性 '禁用'
如果选择 值== 5 - > FORTH & FIFTH &第六除去属性 '禁用'
和 别的选择值== 2 - >在于,第五,第六名:添加属性 '已禁用'

这是我的脚本

<select id="FIRST"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 

<select id="SECOND"> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
</select> 

<select id="THIRST"> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
</select> 

<select id="FORTH" disabled> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
</select> 

<select id="SIXTH" disabled> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
</select> 

<select id="FIFTH" disabled> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
    <option value=" ">Something</option> 
</select> 


<script> 
$(document).ready(function(){ 
    $('#FIRST').change(function(event) { 
    if ($(this).val() == 3) { 
     $('#FORTH').removeAttr('disabled'); 
    } 
    else if $(this).val() == 4) { 
     $('#FORTH, #FIFTH').removeAttr('disabled'); 
    } 
    else if ($(this).val() == 5) { 
     $('#FORTH, #FIFTH, #SIXTH').removeAttr('disabled'); 
    } 
    else { 
     $('#FORTH, #FIFTH, #SIXTH').attr('disabled'); 
    }; 
     }); 
}); 
</script> 

是正确的吗?这不会运行

+0

那么,如果它不运行它是不正确的。保持JavaScript错误控制台处于打开状态以查看错误消息。 – JJJ 2013-03-08 15:50:36

+0

您可以尝试使用Chrome或Firebug来调试您的JavaScript并显示错误的位置。 Web Developer chrome扩展程序也是最棒的! – 2013-03-08 15:51:44

回答

2

正如人们所说的,你有2个语法错误,一个是关于第一else if和一个第二行到最后一行你丢失了一个右括号)

尽管它是不是你问,这是什么时候使用开关的情况下,以避免难看,inefficent代码一个很好的例子,见下面的例子:

$('#FIRST').change(function (event) { 
    switch (+$(this).val()) 
    { 
     case 3: $('#FORTH').prop('disabled', false); break; 
     case 4: $('#FORTH, #FIFTH').prop('disabled', false); break; 
     case 5: $('#FORTH, #FIFTH, #SIXTH').prop('disabled', false); break; 
     default: $('#FORTH, #FIFTH, #SIXTH').prop('disabled', true); break; 
    } 
}); 

编辑 - 你也有一个令人困惑的排序问题,您的标记在第六和第五个错误的方法中,我修复了这个错误(并且将THIRST更名为THIRD),您可以看到上述代码的工作演示,这个代码使用修改后的标记在此JSFiddle

要实现来自Derek Henderson的评论,上面的代码可以更新为如下所示:

$('#FIRST').change(function (event) { 
    switch (+$(this).val()) 
    { 
     case 3: $('#FORTH').prop('disabled', false); $('#FIFTH, #SIXTH').prop('disabled', true); break; 
     case 4: $('#FORTH, #FIFTH').prop('disabled', false); $('#SIXTH').prop('disabled', true); break; 
     case 5: $('#FORTH, #FIFTH, #SIXTH').prop('disabled', false); break; 
     default: $('#FORTH, #FIFTH, #SIXTH').prop('disabled', true); break; 
    } 
}); 

这是一个在JSFiddle上工作的例子。

+1

使用开关+1。但是,我不确定这是做什么我*认为* user2148971想要。要做到这一点,为每种情况下指定禁用和启用控件。否则,选择5后选择3或4将根本没有任何效果。 – 2013-03-08 16:09:08

+0

我已更新我的答案包括代码if OP想要做到这一点,值得注意的是,任何OP代码或任何答案都不会实现这一点,并且完全不涉及使用开关。+1您的评论,因为它增加了有用的信息。 – 2013-03-08 16:15:28

+0

非常抱歉谢谢你,我是新来的,所以不知道规则 – 2016-11-24 02:53:02

1

您的代码中有2个语法错误,对于else if语句之一,您丢失了})关闭change处理程序和(

$(document).ready(function(){ 
    $('#FIRST').change(function(event) { 
     if ($(this).val() == 3) { 
      $('#FORTH').prop('disabled', false); 
     } 
     else if ($(this).val() == 4) { // here 
      $('#FORTH, #FIFTH').prop('disabled', false); 
     } 
     else if ($(this).val() == 5) { 
      $('#FORTH, #FIFTH, #SIXTH').prop('disabled', false); 
     } 
     else { 
      $('#FORTH, #FIFTH, #SIXTH').prop('disabled', true); 
     } 
    }) // and here 
}); 
+0

感谢所有,我错过了( – 2013-03-08 16:06:12

0

你错过了(更改:

else if $(this).val() == 4) { 
    $('#FORTH, #FIFTH').prop('disabled', false); 
} 

else if ($(this).val() == 4) { 
    $('#FORTH, #FIFTH').prop('disabled', false); 
} 
+0

谢谢,这是我的问题。 – 2013-03-08 16:07:53

+0

不客气!标记或设置为回答如果你可以。 – 2013-03-08 16:16:50