在onchange事件jQuery之后获取之前的下拉值

时间:2015-09-23 11:19:32

标签: javascript jquery dropdown

如何在onchange事件后获取AUTO-Generated下拉菜单的上一个值?实施例

<select class="form-control" name="Diabetes_UK_3147" id="Diabetes_UK_3147" onchange="return verifyUpdateResponseGross(this);">
  <option value="Yes">Yes</option>
  <option value="Possibly">Possibly</option>
  <option value="">N/A</option>
</select>

我有这个功能

function verifyUpdateResponseGross(val)
{
  var updated_response = val.value;
  var colheader = val.name
  var before_gross = $('#new_gross').val(); 

  $.ajax({
  url: "qa/api/crm/getquestion", 
  type: 'GET',
  data: {'colheader':colheader},
  success: function(result){
    // var costperlead = result;
    // if(updated_response != "")
    // {
    //  var new_gross_amount = parseFloat(before_gross) + parseFloat(costperlead);
    //  $('#new_gross').val(new_gross_amount);
    // }
    // else
    // {
    //  var new_gross_amount = parseFloat(before_gross) - parseFloat(costperlead);
    //  $('#new_gross').val(new_gross_amount);
    // }
    // console.log(costperlead);
   }});
}

我想获得前一个值的原因是我需要检查如果下拉值为空(N / A),那么我需要执行一些操作,如果值不为空,那么我需要执行另一个操作,但是当值gis不是空的但是与之前的值相同时,则不执行任何操作。

这些操作是评论中的操作。感谢

更新自动生成ID和名称。这就是为什么我有一个

onchange="return verifyUpdateResponseGross(this);"

这将处理更改并执行必要的操作。

这是自动生成的

enter image description here

4 个答案:

答案 0 :(得分:2)

通过jquery做到最好的方法:

  $(document).ready(function(){
        var previous;
         $("#Diabetes_UK_3147").on("focus click",function () {
            previous = this.value; // Old vaue 

        }).change(function() {
        var value =  this.value; // New Value
          $('span').text('Old Value : '+previous+' New Value : '+value)
        });

    })

这里是小提琴http://jsfiddle.net/Laa2hL3b/

已编辑:在自动生成的下拉列表中,您可以添加自定义类,例如“myselectbox”

<select class="form-control  myselectbox"

并在此处进行更改

  $(".myselectbox").on(/* other code remain same */

答案 1 :(得分:1)

使用data来存储数据而不是全局变量:

$("#Diabetes_UK_3147").on("focus",function(){  
     $(this).data('previous',$(this).val());
}

然后您可以按$("#Diabetes_UK_3147").data('previous');

访问之前的值

jQuery data

答案 2 :(得分:0)

使用data-*,如下所示。此外,删除内联事件处理程序onchange="return verifyUpdateResponseGross(this);"并以不引人注目的方式执行。

var $select = $("#Diabetes_UK_3147");
$select.data("previous-val", $select.val());

$select.on("change", function() {

    var current_value = $(this).val();

    if (current_value == "") {
        //Do stuff when empty   
    } else if ( current_value != $(this).data("previousVal") && current_value != "" ) {
        //Do stuff when not empty and current value != previous value
    }
});

答案 3 :(得分:0)

var $select = $("#my-select");

$select.data("prevVal", $select.val()).data("currVal", $select.val()).on("change", function () {
    var $this = $(this);
    $this.data("prevVal", $this.data("currVal")).data("currVal", $this.val());

    // do your staff here. Previous value is available in $this.data("prevVal")
});