0

如何在 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),那么我需要执行一些操作,如果值不为空,那么我需要执行另一个操作,但是当值 gi 不为空,但与前一个值相同,然后什么也不做。

这些操作在评论中。谢谢

更新id 和 name 是自动生成的。这就是为什么我有一个

onchange="return verifyUpdateResponseGross(this);"

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

这是自动生成的

在此处输入图像描述

4

4 回答 4

3

通过 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 */
于 2015-09-23T11:26:18.420 回答
2

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

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

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

jQuery 数据

于 2015-09-23T11:28:48.350 回答
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
    }
});
于 2015-09-23T11:37:36.283 回答
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")
});
于 2017-08-06T01:39:00.093 回答