获取 select HTML select 元素的预 select 值

Get pre-selected value of an HTML select element

或者通过示例,无论用户是否更改它,如何通过 JavaScript 或 jQuery 检索 "c"?

<select id="select-menu">
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c" selected>C</option>
    <option value="d">D</option>
</select>

我尝试了以下方法,但是,它 returns 当前所选菜单的值。我想我可以采用类似的方法,在页面加载时运行并保存值,但希望有更多 "proper" 方法可以做到这一点。

$('#select-menu > option').each(function(i){
    if(this.selected) {
        console.log(this.value)
         $("#submit").val(this.value);
         return false;
    }
})

您可以将值保存在 html5 data-* 属性上:

<select id="select-menu" data-default="c">

并通过

获取
$("#select-menu").attr("data-default");

没有更好的办法。 select 是用户可修改的。

如果您想保留原始值,您可以在加载时保存它:

$(document).ready(function() {
    var initialValue = $("#select-menu").val();
});

您也可以将其写在隐藏输入中:

<input type="hidden" name="initial-select-menu" value="c">

这种方式的好处是值将与表单的其余部分一起提交。在某些情况下可能更可取。

或者您可以将初始值填充到 data 属性中:

<select id="select-menu" data-initial="c">
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c" selected>C</option>
    <option value="d">D</option>
</select>

使用jQuery.attr()获取初始值:

function get_initial(){

    $('#select-menu > option').each(function(i){
    
        if($(this).attr('selected')) {
            console.log('initial: ' + this.value)
        }

        if(this.selected) {
            console.log('current: ' + this.value)
        }
    
    })

}

$('.initial').on('click', get_initial);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select-menu">
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c" selected>C</option>
    <option value="d">D</option>
</select>

<button class="initial">check initial</button>

以下代码展示了与使用 JavaScript 从 select 字段获取值相关的各种示例。

工作代码段

const selectMenu = document.getElementById("select-menu");

var selectedIndex = selectMenu.options[selectMenu.selectedIndex].value;

/*Option 1*/
selectMenu.onchange = function() {
  selectedIndex = selectMenu.options[selectMenu.selectedIndex].value;
}

/*Option 2*/
/*selectMenu.addEventListener("change", function(){
  selectedIndex = selectMenu.options[selectMenu.selectedIndex].value;
})*/

/*Option 3*/
/*function updateSelectedIndex() {
  selectedIndex = selectMenu.options[selectMenu.selectedIndex].value;
}*/

document.writeln(selectedIndex);
<!-- Option 3 -->
<!-- <select id="select-menu" onchange="updateSelectedIndex"> -->
<select id="select-menu">
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c" selected>C</option>
    <option value="d">D</option>
</select>

在适当的情况下试试这个:

 let preselectedOption = $(targetDropDown).find('option[selected]');
 let currentOption = $(targetDropDown).find('option:selected');