HTML下拉列表可以't如果下拉列表中只有一个值,则捕获onChange()

HTML dropdown can't capture onChange() if there is only one value in dropdown

本文关键字:下拉列表 onChange 有一个 HTML 如果      更新时间:2023-09-26

我使用Jquery来选择下拉列表的值。

我需要对OnChange事件(jQuery中的.change)执行一些操作,但如果下拉列表中只有一个选项,我无法在onChange事件中捕获它。

我的下拉列表是动态形成的,所以不知道我会得到多少个选项,但如果只有一个选项,我会面临问题
是否有任何方法可以用一个<option>捕获<select>OnChange事件?

您不需要有onchange事件。只要有一个从onchange调用的函数,如果只有一个项,就继续调用那个函数。

function populate() {
    //do work to populate #selector
    if($("#selector option").length == 1) {
        $("#selector").hide();
        workerFunction();
    } else {
        $("#selector").show();
    }
    $("#selector").change(workerFunction);
    //the following line of code will work like a default:
    workerFunction();
}
function workerFunction() {
    //put whatever used to be in your onChange function here
}

onchange事件发生在元素的内部状态发生更改时。由于您有一个具有唯一值的下拉列表,因此它的状态永远不会更改,因此不会触发事件。

<label for="checkboxThatUsedToBeASelect">
    <input type="checkbox" id="checkboxThatUsedToBeASelect" name="checkboxThatUsedToBeASelect"  value="something" />
</label>
$('#checkboxThatUsedToBeASelect').change( function(){
});

现在,您有了一个更用户友好的输入,它将在选中或未选中时触发更改。:D

条件事件绑定器怎么样?类似于:

var changeHandler = function (method) {
    alert(method);
};
if ($('select option').length > 1) {
    $('select').change(function() {
        changeHandler('change');
    });
} else {
    $('select').click(function() {
        changeHandler('click');
    });
}

听起来您的选项标记中有一个HTML错误。

除此之外,为了针对使用jQuery通常创建的东西,您必须使用delegator。

$('selector').change( function(e){...}); // without delegator
$('body').on('change','selector', function(e){...}); // with delegator, it detects even an element added dinamically

也就是说,您应该能够检测新旧元素的变化

。change寻找另一个囚犯来交换位置。不幸的是,在你的情况下,有一个单独的家庭案例,因此事件没有启动。