0

我需要在表单中显示一些选择,或者根据之前选择的选项隐藏它们。我认为代码很简单,这里是javascript:

$(document).ready(function() {
    $('#A2').hide();
    $('#A3').hide();
    $('#A5').hide();
    $('#A6').hide();
    //A8, A9, A11...

    $('#A1').change(function(){
        if($(this).val() == "1"){
            $('#A2').show();
            $('#A2').focus();
        }
        else $('#A2').hide();
    });
    $('#A2').change(function(){
        if($(this).val() == "1"){
            $('#A3').show();
            $('#A3').focus();
        }
        else $('#A3').hide();
    });
    //the same with A4, A5, A7...
});

这是html的一部分:

<select name="A1" id="A1">
    <option selected="selected">¿Conoce?</option>
    <option value="1">Sí</option>
    <option value="0">No</option>
</select>
<select name="A2" id="A2">
    <option selected="selected">¿Ha usado?</option>
    <option value="1">Sí</option>
    <option value="0">No</option>
</select>
<select name="A3" id="A3">
    <option selected="selected">¿Nota?</option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="99">Ns/Nc</option>
</select>
//the same for A4-A6, A7-A9...

我想要的是创建一个无需大量代码即可执行此操作的函数...我已经测试了下一个 js,但它不起作用:

$.fn.validar1 = function(elem) {
    if(elem.val() == "1"){
        elem.next('select').show();
        elem.next('select').focus();
    }
    else elem.next('select').hide();
} 

validar1('#A1');

我知道我的代码很糟糕......我从 jQuery 开始,请怜悯 :O)

4

1 回答 1

0

这就是你所需要的,如果你展示的 html 和 js 就是你所得到的:

$(document).ready(function() {
    $('select').hide();

    $('select').change(function(){
        if($(this).val() == "1"){
            $(this).next().show().focus();
        }
        else $(this).next().hide();
    });
});

如果这不起作用,请制作小提琴

于 2013-08-07T11:44:06.660 回答