代码之家  ›  专栏  ›  技术社区  ›  stukerr

使用javascript或jquery,如何检查选择框是否与原始值匹配?

  •  3
  • stukerr  · 技术社区  · 16 年前

    只是想知道是否有任何方法可以检查“选择框”下拉列表的值是否与页面加载时的原始值匹配(使用 selected = "yes" )?

    我想我可以使用PHP创建原始值作为javascript变量,并对照它们进行检查,但是有一些选择框,我正在努力使代码尽可能简洁!

    4 回复  |  直到 13 年前
        1
  •  7
  •   VoteyDisciple    16 年前

    这一点都不难。这将跟踪每个 select 页面上:

    $(document).ready(function() {
        $("select").each(function() {
            var originalValue = $(this).val();
    
            $(this).change(function() {
                if ($(this).val() != originalValue)
                    $(this).addClass('value-has-changed-since-page-loaded');
                else
                    $(this).removeClass('value-has-changed-since-page-loaded');
            });
        });
    });
    

    这将应用一个新类 value-has-changed-since-page-loaded (可能您会将其重命名为更相关的内容)任何值与加载页面时不同的选择框。

    只要您有兴趣看到这个值发生了变化,就可以利用这个类。

        2
  •  1
  •   RaYell    16 年前
    $(document).ready(function() {
        var initialSelectValue = $('#yourselect').val();
    
        // call this function when you want to check the value
        // returns true if value match, false otherwise
        function checkSelectValue() {
            return $('#yourselect').val() === initialSelectValue;
        }
    });
    

    PS.您应该使用 selected="selected" selected="yes" .

        3
  •  1
  •   Ty W    16 年前

    在页面加载时,使用按名称索引的每个选择框的初始值创建一个数组:

    var select_values = [];
    
    $(document).ready(function() {
        $("select").each(function() {
            select_values[$(this).attr('name')] = $(this).val();
        });
    });
    

    稍后,当需要检查某个值是否已更改时:

    function has_select_changed(name) {
        return $("select[name="+name+"]").val() != select_values[name];
    }
    
        4
  •  0
  •   pawel    16 年前

    首先,一个片段:

    $('select').each( 
      function(){ 
        if( this.options[ this.selectedIndex ].getAttribute('selected') === null ){
              alert( this.name +' has changed!') 
        }
    });
    

    现在解释一下:

    假设selectelement是对<select/>元素的引用,则可以使用

    selectElement.selectedIndex
    

    要获取当前选定的<选项/>元素,请使用

    selectElement.options[ selectElement.selectedIndex ]
    

    现在,当您知道选择了哪个选项元素时,您就可以知道这个元素是否具有selected='selected'属性(在源代码中,它不会更改-这与dom节点的.selected属性不同,对于当前选择的选项元素为true,而当选择更改时,它会更改)。