0

下面的代码执行以下操作。用户从下拉列表中选择一个 SVN 分支。这会在另一个下拉列表中加载具有关联模块的另一个页面。Continue当第二个下拉菜单 ( module_name) 未被选中时,它工作正常并且按钮被禁用。但是,如果我返回并从第一个下拉列表中选择不同的分支,则该Continue按钮处于活动状态,我需要将其重置为禁用。

HTML 代码

<select name="branch_name" id="branch_name">
    <option value="">-- Select a branch --</option>
<?php
    foreach($results as $k) {
        echo "<option value='{$k}'>{$k}</option>";
    }
?>
</select>

<select name="module_name" id="module_name">
    <option value="">-- Select a module --</option>
<?php
    foreach($results as $k) {
        echo "<option value='{$k}'>{$k}</option>";
    }
?>
</select>

JS代码

$(document).on('change', '#module_name', function(){
    $('#continue').prop('disabled', $('#module_name option:selected').length == '');
});

$('#branch_name').on("change", function() {
    $('#output').load('/tags/module',{branch_name: $(this).val()});
});

有效的新 JS 代码

$(document).on('change', '#module_name', function(){
    $('#continue').prop('disabled', $(this).val() =='');
});

$('#branch_name').on("change", function() {
    $("#continue").attr("disabled", "disabled");
    $('#output').load('/tags/module',{branch_name: $(this).val()});
});
4

1 回答 1

1

length是一个数字,您的测试正在检查选择中是否有一个option,所以它永远不会相等''

    /* checks how many eleemnts match selector, will return "0" if none exist*/
    $('#module_name option:selected').length

用于val()查看 select 是否有值

$(document).on('change', '#module_name', function(){
    $('#continue').prop('disabled', $(this).val() =='');
});
于 2013-01-13T02:34:15.650 回答