使用选择选项切换案例

时间:2013-05-17 21:32:32

标签: javascript jquery switch-statement

我在使用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>

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

5 个答案:

答案 0 :(得分:5)

val()总是会返回一个字符串。尝试在您的switch声明中添加“01”,“02”等。

答案 1 :(得分:3)

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

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

答案 2 :(得分: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/

答案 3 :(得分: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:

    }
});

答案 4 :(得分: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:
                    //
                }
            });