如何通过jQuery了解“select”输入值是否已更改?

时间:2012-11-07 10:58:26

标签: javascript html events jquery

我知道change中的jQuery事件处理与类型select的输入相关联。但我想知道用户是否在select元素中选择了另一个值!所以当用户在select中选择一个新元素但我想知道用户是否选择了不同的值时,我不想运行代码! 实际上我的表单中有两个选择元素,我想只在两个选择元素被更改时才启动ajax。那么如何知道这两个元素已被改变?

5 个答案:

答案 0 :(得分:2)

首先,您可以使用select事件处理程序(为某些标志设置值)。这是它的工作原理:

$('#select').change(function () {
  alert($(this).val());
});​

演示:http://jsfiddle.net/dXmsD/

或者您可以将原始值存储在某处,然后进行检查:

$(document).ready(function () {
  var val = $('#select').val();    
  ...
  // in some event handler
  if ($('#select').val() != val) ...
  ...
});

答案 1 :(得分:2)

您可以通过在Javascript文件中设置绑定来专门侦听所选元素的更改事件。

这只解决了你问题的一半。您想知道何时选择了不同的元素。

您可以通过创建每次触发事件时更新的跟踪变量来执行此操作。

首先,为跟踪变量指定一个永远不会出现在下拉列表中的值。

// Hugely contrived!  Don't ship to production!
var trackSelect = "I am extremely unlikely to be present";

然后,您需要设置一个函数来处理更改事件。

简单的事情: -

var checkChange = function() {
  // If current value different from last tracked value
  if ( trackSelect != $('#yourDD').val() )
  {
     // Do work associated with an actual change!
  }

  // Record current value in tracking variable
  trackSelect = $('#yourDD').val();
}

最后,您需要在document.ready。

中连接事件
$(document).ready(function () {
  $('#yourDD').bind('change', function (e) { checkChange() });
});

答案 2 :(得分:1)

您可以在某个隐藏字段中保存页面加载的值。

喜欢

    $(document).ready(function(){
 $('hiddenFieldId').val($('selectBoxId').val());
then on change you can grab the value of select:
});
    $('selectBoxId').change(function(){
    var valChng = $(this).val();
    // now match the value with hidden field
    if(valChng == $('hiddenFieldId').val()){ 
    }
    });

答案 3 :(得分:1)

首先,您需要存储所选选项的先前值,然后您应检查新选择的值是否与存储值不同。

查看sample

$(document).ready(function() {
    var lastValue, selectedValue;
    $('#select').change(function() {
        selectedValue = $(this).find(':selected').val();
        if(selectedValue == lastValue) {
            alert('the value is the same');
        }            
        else {
            alert('the value has changed');
            lastValue = selectedValue;
        }
    }); 
});​

答案 4 :(得分:0)

 $("select").change(function () {
      var str = "";
      $("select option:selected").each(function () {
            str += $(this).text() + " ";
          });
      $("div").text(str);
    })
    .change();

http://docs.jquery.com/Events/change