javascript - jQuery - 无法选择最后一个选项组的第一个选项

标签 javascript jquery firefox optgroup

我有一个小问题。 我需要从 <select> 中选择选项A,触发 Action 并选择他的第一个<option><select> B 按值从中选择 <option>来自A 一切正常,但我不能只选择最后一个 optgroup 和他的选项。

试着看看jsfiddle

这个错误似乎只存在于 Firefox (Linux, Win7) 上。谷歌浏览器没问题。 有什么想法吗?

代码(html):

<select id="charset" name="charset">
    <option value=""></option>
    <option value="armscii8">ARMSCII-8 Armenian</option>
    <option value="ascii">US ASCII</option>
    <option selected="selected" value="utf8">UTF-8 Unicode</option>
</select>

<select id="collation" name="collation">
    <optgroup label="armscii8">
        <option value="armscii8_bin">armscii8_bin</option>
        <option value="armscii8_general_ci">armscii8_general_ci</option>
    </optgroup>
    <optgroup label="ascii">
        <option value="ascii_bin">ascii_bin</option>
        <option value="ascii_general_ci">ascii_general_ci</option>
    </optgroup>
    <optgroup label="utf8">
        <option value="utf8_bin" selected="selected">utf8_bin</option>
        <option value="utf8_czech_ci">utf8_czech_ci</option>
        <option value="utf8_danish_ci">utf8_danish_ci</option>
        <option value="utf8_esperanto_ci">utf8_esperanto_ci</option>
    </optgroup>
</select>`

代码js:

(function($){

function setCollation(charset) {
    $('#collation optgroup option').removeAttr('selected');
    $('#collation optgroup').hide(0);

    if (charset && charset != '') {
        $("#collation optgroup[label='" + charset + "']").show(0);
        $("#collation optgroup[label='" + charset + "'] option:first").attr('selected', 'selected');
    }
}

$('#charset').change(function() {
    setCollation($(this).val());
});
setCollation($('#charset').val());

})(jQuery);

我更新了jsfiddle我在其中删除了显示/隐藏功能。

我将尝试重现脚本的工作原理:

  1. 当我从第一个选择框(fe.value DOS Russin)中选择 Collat​​ion 时,会根据需要选择第二个选择。

  2. 我将第一个选择值更改为另一个。这一刻一切都好。

  3. >

    !我改回 DOS 俄语,此时第二个选择框没有像第一步那样被选中。

这是一个非常奇怪的行为,我不能在 FF 中工作。

最佳答案

我无法解释为什么浏览器行为不一致,但我可以告诉你更改为 .prop 似乎已经解决了问题。

 $('#collation optgroup').prop('disabled', true);
    $('#collation option').removeAttr('selected');

    if (charset && charset != '') {
        $("#collation optgroup[label='" + charset + "']").prop('disabled',false);
        $("#collation optgroup[label='" + charset + "'] > option:eq(0)").prop('selected', true);

查看实际效果:

http://jsfiddle.net/8pAAp/1/

关于javascript - jQuery - 无法选择最后一个选项组的第一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057048/

相关文章:

javascript - 如何在网页上以编程方式模糊文本并使其不可读

javascript - 一个 div 通过快速点击在屏幕外动画

javascript - Mutation 不会更新 VUEX 中的 store

javascript - nodejs 需要使用 'strict use' 吗?或者 node 的严格模式的最佳实践是什么?

javascript - localForage 在 Chrome 中找到数据,在 Firefox 中找不到

JQuery 拖动到父级之外

javascript - 如何限制datepair.js中的时间范围?

javascript - 打开一个新选项卡并写一些东西

java - 如何在 selenium 中设置 firefoxdriver 的驱动程序路径

html - 纯CSS线性渐变边框