使用 jQuery 默认选择一个选项

Posted

技术标签:

【中文标题】使用 jQuery 默认选择一个选项【英文标题】:Chosen select an option by default with jQuery 【发布时间】:2012-02-27 23:30:47 【问题描述】:

我有一个带有选项的选择框,我在 Zend 视图上使用 jQuery "Chosen"。这个插件很好用。

javascript:
$('#select_type').chosen();

我的问题是我需要在页面加载时根据 type_id 的值选择其中一个选项。我试过这个:

document.getElementById('select_type').value = '<?=$this->type_id?>';

这会改变它的值,但在选择的 JQuery 中没有选择该选项。

有什么想法吗?


编辑:通过执行我上面提到的操作,该选项成功更改,但它不会更新/更改 jQuery“选择”插件中的选定元素。我的问题是关于更新 jQuery Chosen 的选定值而不是 html SELECT (我已经成功完成)。 Here is a link to jQuery Chosen plugin

【问题讨论】:

这不是两个独立的问题吗? jQuery提供的与值无关,反之亦然。 【参考方案1】:

尝试以下方法:

$("#choen-presentacion").val(value.id_presentacion).trigger('chosen:updated')

【讨论】:

【参考方案2】:

您可以使用这样选择的属性设置正确的元素:

<select name="teams[]" data-placeholder="Chose an option:" 
        class="chzn-select" multiple tabindex="6">
    <option value=""></option>
    <option selected="selected">Dallas Cowboys</option>
    <option selected="selected">New York Giants</option>
    <option>Philadelphia Eagles</option>
    <option>Washington Redskins</option>
</select>

Chosen 将自行初始化并显示两个预先选择的选项。

【讨论】:

【参考方案3】:

试试这个:

$("#select_type").val(<?=$this->type_id?>).trigger('change');

$('#select_type').trigger('liszt:updated');

【讨论】:

【参考方案4】:

用 JS 更新列表

运行后:

document.getElementById('select_type').value = '<?=$this->type_id?>';

对于选择的版本 1 及更高版本(更新)

你应该打电话:

$('#select_type').trigger('chosen:updated');

取自Chosen documentation:

动态更新选择

如果您需要更新选择字段中的选项并希望 Chosen 获取更改,则需要在该字段上触发“chosen:updated”事件。 Chosen 将根据更新的内容重新构建自己。

$("#form_field").trigger("chosen:updated");

有关此 API 更改的公告,请参阅 the change log。

对于低于 1(旧)的选择版本

你应该打电话:

$('#select_type').trigger('liszt:updated');

取自Chosen documentation:

动态更新选择

如果您需要更新选择字段中的选项并希望选择 要获取更改,您需要触发“listzt:updated” 场上的事件。 Chosen 将根据更新的内容重新构建自己 内容。

jQuery 版本$("#form_field").trigger("liszt:updated"); 原型版Event.fire($("form_field"), "liszt:updated");

在调用 Chosen 之前设置值

您为什么不在使用 JavaScript 调用 Chosen 插件之前在 HTML 中设置选定的选项,而不是从 JS 中执行此操作?您正在从一段 php 中设置值,所以我不明白为什么不能这样做。

【讨论】:

这太棒了!我需要让change() 在DOM 上运行,但让&lt;select&gt; 恢复正常。如果您的第一个选项是 &lt;option value&gt;&lt;/option&gt; 就像在文档中一样,您可以将其放在 change() 绑定的末尾以重置选择菜单:$(this).val(""); $(this).trigger("liszt:updated") 从 1.0 版开始,触发器现在是“选择:更新”。见harvesthq.github.io/chosen/#change-update-events @Tony 谢谢你提到这一点。我已经更新了我的答案,以反映他们 API 的这些变化。【参考方案5】:
$('#select_type').val('<?=$this->type_id?>');

试试看

【讨论】:

谢谢yapingchen,但我知道如何设置一个选项我需要在我上面提到的插件中选择 $('#select_type').val('=$this->type_id?>');【参考方案6】:

试试这个:

$('#select_type').val('<?=$this->type_id;?>'); // Select the value before .chosen();
$('#select_type').chosen();

【讨论】:

以上是关于使用 jQuery 默认选择一个选项的主要内容,如果未能解决你的问题,请参考以下文章

如何更改选择 Jquery 中的默认选项

每当我更改第一个下拉列表中的选项时,需要 jquery 将第二个下拉列表的默认选项更改为“选择”

JQuery 设置选择的选项

删除 Select2 Jquery 插件中的默认选择

jQuery select2设置默认值从列表中的一个选项吗

jquery 操作 select 默认选择第一个元素