【问题标题】:"defaultValue" property for <select>?<select> 的“defaultValue”属性?
【发布时间】:2016-05-24 05:34:02
【问题描述】:

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));

如何在 select 上完成此操作?

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

谢谢!

【问题讨论】:

  • 我不认为selectedIndex 是一个布尔值,它应该是一个整数,正如@Pointy 所说,如果你迭代选项,得到 defaultSelected,你可以将 selectedIndex 设置为 defaultSelected 的索引。
  • 您需要在您希望成为默认选项的选项本身上使用“selected”属性。继续在那条路上。

标签: javascript jquery dom


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这是适合我的 jquery:

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

    【讨论】:

    • 唯一的问题是如果没有选项设置selected HTML 属性,它返回未定义。但在这种情况下,默认值是第一个选项。
    【解决方案3】:

    使用 Jquery 我们可以这样做:

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

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

    【讨论】:

      【解决方案4】:

      我使用以下内容循环浏览了一个论坛,检查了它们的默认值和当前值。

      如果脚本与单个选择框交叉,它将遍历选择框上的子项。

      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);
       }
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          我找到了一种最短的方法:

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

          【讨论】:

            【解决方案7】:

            我在页面加载时运行它来手动设置选择框的默认值。

            // 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);
                }
            });
            

            【讨论】:

              【解决方案8】:

              最简单的方法是:

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

              【讨论】:

                猜你喜欢
                • 2011-01-20
                • 1970-01-01
                • 1970-01-01
                • 2010-12-31
                • 2014-07-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-07-11
                相关资源
                最近更新 更多