0

我有一个下拉菜单,可以跟踪上一个和当前选定的元素。下拉菜单默认值从 {0} 开始。当用户更改下拉菜单时,new_value 存储为 {2},但前一个始终为 {0},除非用户单击下拉菜单然后重新关注新值,然后在这种情况下之前更新为该值{2}。

有没有一种方法可以强制更新焦点,即使用户从不取消下拉框的焦点,基本上是在每个更改事件上?

(function () {
var previous;

    $('select[name=item_a]').focus(function () {
        previous = parseInt($(this).val()); }).change(function() {

            var new_value = $(this).attr('id'); 

     }
4

4 回答 4

1
var previous, new_value;

$('select[name=item_a]').on({

   focus: function(){
      previous = parseInt($(this).val());
   },

   change: function(){
        new_value = $(this).attr('id');
        $(this).blur();
   }

 });
于 2012-11-26T17:11:37.123 回答
0

要触发焦点,您可以调用:

$('select[name=item_a]').trigger('focus')
于 2012-11-26T17:06:45.753 回答
0

你可以这样使用

$("input").on("focus", function(e) {
your code
});

$("input").on("change", function(e) {
your code
});
于 2012-11-26T17:09:57.870 回答
0

这应该在您更改时设置您的值:

var previous, current;

$('#select[name=item_a]').change(
    previous = current;
    current = $('#select[name=item_a]').val();
);

我还建议设置选择的 id,这样您就可以这样做,$('#selectId')而不是$('select[name=item_a]')它会具有更好的性能,并且您的 JQuery 选择器将更易于阅读。

于 2012-11-26T17:18:42.890 回答