Jquery Multiselect - 手动触发事件?

时间:2009-06-02 20:45:14

标签: javascript jquery multi-select

我正在使用来自http://abeautifulsite.net/notebook/62

的jquery multiselect控件

我需要通过javascript在特定事件上手动检查其中一个选项。

每当我尝试更改checked属性或触发单击时,都会明确地调用click函数等,我会选中复选框,但CSS永远不会更改,文本框永远不会刷新当前选中的元素

实施例: 如果我想使用带有javascript代码的“TRA”值选中复选框并确保其行为正常,我该如何实现?

<input class="multiSelect" type="text" style="cursor: default;" value="" readonly="readonly"/>

<div class="multiSelectOptions" style="position: absolute; z-index: 99999; display: none;">
    <label class="selectAll">
        <input class="selectAll" type="checkbox"/>
        (All)   
    </label>
    <label>
        <input type="checkbox" value="ADP" name="Attributes"/>
        Adaptation
    </label>
    <label>
        <input type="checkbox" value="TRA" name="Attributes"/>
        Translation
    </label>
</div>  

1 个答案:

答案 0 :(得分:0)

似乎您需要在触发click事件之前设置checked属性,然后再设置checked属性。我将进一步研究,但与此同时,这是解决方案

<强> Working Example

相关的jQuery代码

$(function() {
    $('#sample').multiSelect();
    $('#check').click(function() {
        $('input[type="checkbox"][value="TRA"]')
            .attr('checked',true)
            .trigger('click')
            .attr('checked',true);
    });
    $('#uncheck').click(function() {
        $('input[type="checkbox"][value="TRA"]')
            .attr('checked',false)
            .trigger('click')
            .attr('checked',false);
    });
});

相关HTML

<select id="sample" multiple="multiple">
    <option value=""/>
    <option value="ADP">Adaptation</option>
    <option value="TRA">Translation</option>
</select>
<br/>
<input id="check" type="button" value="Check TRA" style="margin-left: 250px; width: 100px;" />
<br/>
<input id="uncheck" type="button" value="Uncheck TRA" style="margin-left: 250px; width: 100px;" />