将选择值重置为默认值

OTA*_*TAR 51 html javascript jquery

我有选择框

<select id="my_select">
    <option value="a">a</option>
    <option value="b" selected="selected">b</option>
    <option value="c">c</option>
</select>

<div id="reset">
    reset
</div>
Run Code Online (Sandbox Code Playgroud)

我也有重置按钮,这里默认(选中)值是"b",假设我选择"c"并且我需要重新选择框值为默认值,如何使用jquery进行此操作?

$("#reset").on("click", function () {
    // What do here?
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle:http://jsfiddle.net/T8sCf/1/

Fel*_*ing 70

您可以使用defaultSelectedoption元素属性:

包含selectedHTML属性的初始值,指示是否默认选择该选项.

因此,DOM接口已经跟踪最初选择了哪个选项.

$("#reset").on("click", function () {
    $('#my_select option').prop('selected', function() {
        return this.defaultSelected;
    });
});
Run Code Online (Sandbox Code Playgroud)

DEMO

这甚至适用于多选元素.

如果您不想迭代所有选项,但在找到最初选择的选项后"中断",则可以使用.each:

$('#my_select option').each(function () {
    if (this.defaultSelected) {
        this.selected = true;
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

没有jQuery:

var options = document.querySelectorAll('#my_select option');
for (var i = 0, l = options.length; i < l; i++) {
    options[i].selected = options[i].defaultSelected;
}
Run Code Online (Sandbox Code Playgroud)


小智 16

$('#my_select').get(0).selectedIndex = 1;
Run Code Online (Sandbox Code Playgroud)

但是,在我看来,更好的方法是仅使用HTML(with <input type="reset" />):

<form>
    <select id="my_select">
        <option value="a">a</option>
        <option value="b" selected="selected">b</option>
        <option value="c">c</option>
    </select>
    <input type="reset" value="reset" />
</form>
Run Code Online (Sandbox Code Playgroud)

  • @ChamikaSandamal不,只是快速打字. (2认同)
  • @ChamikaSandamal` .get(0)`用于获取DOM元素,以便您可以访问诸如`.selectedIndex`之类的属性 (2认同)

Dee*_*epu 15

$("#reset").on("click", function () {
    $("#my_select").val('b');//Setting the value as 'b'
});
Run Code Online (Sandbox Code Playgroud)

  • @Jamiec:这可能是服务器端生成的代码. (3认同)

Cha*_*mal 7

您可以使用元素的data属性select

<select id="my_select" data-default-value="b">
    <option value="a">a</option>
    <option value="b" selected="selected">b</option>
    <option value="c">c</option>
</select>
Run Code Online (Sandbox Code Playgroud)

你的JavaScript,

$("#reset").on("click", function () {
    $("#my_select").val($("#my_select").data("default-value"));
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/T8sCf/10/

UPDATE


如果您不知道默认选择并且无法更新html,请在dom ready中添加以下代码,

$("#my_select").data("default-value",$("#my_select").val());
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/T8sCf/24/


fre*_*der 7

为什么不使用简单的javascript函数并在onclick事件上调用它?

function reset(){
document.getElementById("my_select").selectedIndex = 1; //1 = option 2
}
Run Code Online (Sandbox Code Playgroud)


Ide*_*vaj 5

$("#reset").on("click", function () {
    $('#my_select').prop('selectedIndex',0);
});
Run Code Online (Sandbox Code Playgroud)

  • 它不起作用,因为选定的“b”位于第二个位置 (3认同)

小智 5

<select id="my_select">
    <option value="a">a</option>
    <option value="b" selected="selected">b</option>
    <option value="c">c</option>
</select>

<div id="reset">
    reset
</div>

$("#reset").on("click", function () {
    $('#my_select').prop('selectedIndex',0);
});
Run Code Online (Sandbox Code Playgroud)

这是您的问题的简单方法。只有一行回答。