如果下拉列表中只有一个值,则HTML下拉列表无法捕获onChange()

时间:2012-02-08 12:47:04

标签: javascript jquery html javascript-events

我正在使用Jquery来选择下拉值 我需要对 OnChange 事件(jquery中的.change)执行一些操作,但如果下拉列表中只有一个选项,则无法在onChange事件中捕获它。
我的下拉动态是动态形成的,所以不知道有多少选项我会得到多少选项,但如果只有一个选项,我就会遇到问题。
有没有办法只用一个捕获OnChange事件?

6 个答案:

答案 0 :(得分:1)

您不需要进行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
}

答案 1 :(得分:0)

当元素的内部状态发生更改时,会发生

onchange事件。由于您的下拉列表具有唯一值,因此其状态永远不会更改,因此不会触发该事件。

答案 2 :(得分:0)

<label for="checkboxThatUsedToBeASelect">
    <input type="checkbox" id="checkboxThatUsedToBeASelect" name="checkboxThatUsedToBeASelect"  value="something" />
</label>

$('#checkboxThatUsedToBeASelect').change( function(){

});

现在您拥有更加用户友好的输入,并且在选中或取消选中时会触发更改。 :d

答案 3 :(得分:0)

条件事件活页夹怎么样?类似的东西:

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

答案 4 :(得分:-1)

听起来您的选项标签中有HTML错误。

此外,为了定位使用jQuery创建的对象,您必须使用委托人。

import random

file = open('artists.txt', 'r')
ARTIST = random.randint(0, 9)
print(file.readlines()[ARTIST])
file.close()

这就是说,您应该有能力检测新旧元素的变化

答案 5 :(得分:-2)

.change寻找另一名犯人切换位置。在你的情况下,遗憾的是,有一个单独的家庭案件因此事件没有解雇。