0

我在使用 Select 选项的值设置 Switch Case 时遇到问题,这是我正在使用的代码:

<form id="selectcub" name="selectcub">
    <select id="cub01" name="cub01" class="cub">
        <option value="2013" selected>2013</option>
        <option value="2012">2012</option>
        <option value="2011">2011</option>
        <option value="2010">2010</option>
        <option value="2009">2009</option>
        <option value="2008">2008</option>
        <option value="2007">2007</option>
    </select>
                   
    <select id="cub02" name="cub02" class="cub">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03" selected>03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
    </select>
                    
    <a id="cubdl" href="#" class="button">Open</a>
</form>

<script type="text/javascript">
    $(document).ready(function(){
        switch($('#cub02 option:selected').val()) {
            case 01:
                alert("I am an alert box! 1");
            break;
            case 02:
                alert("I am an alert box! 2");
            break;
            default:
                //
        }
    });
</script>

我究竟做错了什么?这是一个现场演示:https ://jsfiddle.net/whC97/

4

5 回答 5

6

val()总是要返回一个字符串。试着在你的switch陈述中加入“01”、“02”等。

于 2013-05-17T21:34:51.440 回答
3

问题是您绑定到$(document).ready(),而不是单击链接。因此,javascript 正在检查加载时的值,而该值是03您没有任何case.

如果您更改默认选择01并将案例放在引号中,您可以看到它工作正常。

于 2013-05-17T21:38:04.690 回答
2

两件事:一:如前所述,val() 返回一个字符串,所以你必须使用例如'01'。二:当 dom 准备好时,该函数会被正确调用,因此只有在您查找代码中选择的“03”时才会发出警报。您可能正在寻找事件侦听器...

$(document).ready(function () {
    $('#cub02').on('change', function(){
        switch($('#cub02 option:selected').val()) {
            case '01':
                alert("I am an alert box! 1");
            break;
            case '02':
                alert("I am an alert box! 2");
            break;
        }
    });
});

和小提琴:http: //jsfiddle.net/whC97/11/

于 2013-05-17T21:40:47.887 回答
1

试试这个 -

演示--> http://jsfiddle.net/whC97/5/

$(document).ready(function () {
    switch (parseInt($('#cub02').val())) {
        case 1:
            console.log("I am an alert box! 1");
            break;
        case 2:
            console.log("I am an alert box! 2");
            break;
        default:

    }
});
于 2013-05-17T21:36:33.937 回答
0

您正在尝试使用字符串表示,您应该使用 parseInt(val) 或切换 case 语句以使用带引号的字符串版本的数字

http://jsfiddle.net/whC97/9/

修改示例提供:

$(document).ready(function(){
                    var val = $('#cub02').val();
                    switch(parseInt(val)) {
                    case 01:
                        alert("I am an alert box! 1");
                    break;
                    case 02:
                        alert("I am an alert box! 2");
                    break;
                    default:
                    //
                }
            });
于 2013-05-17T21:41:56.413 回答