<select>?</select>的“defaultValue”属性

时间:2010-02-27 16:31:06

标签: javascript jquery dom

Javascript有textObject.defaultValue=somevalue用于检索输入的默认值(来自页面加载的存储值),即使您擦除输入并替换内容,仍然可以返回默认值。像这样:

// in the html page
<input id="addr1" type="text" value="21 Oak St." />

// the jquery
myInput = $("#addr1"); // the input, default value on page load = 21 Oak St.

$(myInput).val('51 New St'); // wipe default and set new

// alerts 21 Oak St
alert($(myInput).val($(myInput)[0].defaultValue));

如何在选择中完成此操作?

selectedIndex是布尔值,而不是值,因此不起作用。

谢谢!

8 个答案:

答案 0 :(得分:16)

您可能希望查看“option”元素的“defaultSelected”属性。

最初,如果option标签的原始HTML具有明确的“selected”属性,则“defaultSelected”将为true。您可以通过在页面加载后使用Javascript在选项标签上设置属性来更改它,以响应您喜欢的任何条件。

答案 1 :(得分:6)

这是适合我的jquery:

$('select[name="name_of_select"] option[selected]').val()

答案 2 :(得分:5)

使用Jquery,我们可以这样做:

$('select[name="type_id"] option').map(function()
 { 
    if($(this).attr('defaultSelected')==true) return this 
 }).get(0).value;

这将返回默认的Selected选项值 :)

答案 3 :(得分:1)

我使用以下内容循环浏览论坛,检查其默认值及其当前值。

如果脚本跨越单个选择框,它将遍历选择框上的子项。

oFormObject = document.forms[0];
for(i=0; i<oFormObject.elements.length; i++)
{
     oValue = oFormObject.elements[i].value;
     oType = oFormObject.elements[i].type;
     if(oType=='select-one') {
         for(k=0; k<oFormObject.elements[i].children.length; k++)
         {
             if(oFormObject.elements[i].children[k].defaultSelected==true){
                 oformElement = oFormObject.elements[i].children[k].value;
             }
         }
     }else{
         oformElement = oFormObject.elements[i].defaultValue;
     }
     console.log(oformElement);
     console.log(oValue);
     console.log(oType);
 }

答案 4 :(得分:0)

可能有多个“已选择”选项元素,在这种情况下,如果没有设置其他要求则选择第一个。 @Pointy提示是正确的,但要注意“defaultValue”属性可以被同一页面中的其他代码覆盖。如果它是只读的,那将更有用: - )

答案 5 :(得分:0)

我找到了最简单的方法:

$('select#myselect').find('option[defaultSelected]');

答案 6 :(得分:0)

我在页面加载时运行此操作以手动设置选择框的defaultValue。

// Set a default value property on selectboxes (for reverting)
$('select').each(function(index,ele) {
    var origvalue = $(this).val(),
        defaultvalue = $(this).prop('defaultValue');

    // If the default value hasn't already been set for this selectbox
    if(!defaultvalue) {
        $(this).prop('defaultValue', origvalue);
    }
});

答案 7 :(得分:0)

最简单的方法是:

$('#selectbox option').prop('selected', function() {
     return this.defaultSelected;
});