1

我知道有与 type 的输入相关的change事件处理。但我想知道用户是否在选择元素中选择了另一个值!所以我不想在用户在选择中选择一个新元素时运行代码,但我想知道用户是否选择了不同的值!事实上,我的表单中有两个选择元素,我只想在两个选择元素发生更改时启动一个 ajax。那么如何知道这两个元素发生了变化呢?jQueryselect

4

5 回答 5

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() });
});
于 2012-11-07T11:07:56.987 回答
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) ...
  ...
});
于 2012-11-07T11:00:00.823 回答
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()){ 
    }
    });
于 2012-11-07T11:03:02.453 回答
1

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

查看样品

$(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;
        }
    }); 
});​
于 2012-11-07T11:17:55.947 回答
0
 $("select").change(function () {
      var str = "";
      $("select option:selected").each(function () {
            str += $(this).text() + " ";
          });
      $("div").text(str);
    })
    .change();

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

于 2012-11-07T11:04:38.770 回答