Javascript / Jquery方法获取更改事件下拉列表的先前选定值

时间:2015-04-16 06:11:57

标签: javascript php jquery

我使用javascript代码片段跟踪php。

 <td align="center">
    <select id = "selectedUnit" class="form-control" onchange="saveToDatabase(this.value,'Unit','<?php echo $ingredientArray[$i][0]; ?>')"><?php 
                                                $j=0;
                                                for($j=0;$j<count($unitTypeArray);$j++) { ?>
                                                    <option value="<?php echo $unitTypeArray[$j][0]; ?>" <?php if($ingredientArray[$i][4] == $unitTypeArray[$j][0]){ echo 'selected';} ?>><?php echo $unitTypeArray[$j][1]; ?></option><?php 
                                                } ?>
                                            </select>
    </td>

以上是我的下拉列表,我想要的是在下拉列表更改事件中获取上一个选定值,如下所示。

function saveToDatabase(editableObj,column,id) {
    //editableObj gives me the currently changing value .
    // How I will get the previous selected value ?I am doing it as follows.
    var $selected = $(this).find(':selected');   
       var text = $selected.prev().text(); //previous value
}

请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:1)

第一个选项尝试这个js代码,但是当你第一次改变时,那么就没有先前选择的值。

 var previous;

    function saveToDatabase(editableObj,column,id) {
       alert(previous); //print previous value
       var $selected = $(this).find(':selected');   
       previous= $selected.text();
    }

第二个选项更改此行

<select id = "selectedUnit" class="form-control" onchange="saveToDatabase(this.value,'Unit','<?php echo $ingredientArray[$i][0]; ?>')">

到这个

<select id = "selectedUnit" class="form-control" onclick="saveToDatabase(this.value,'Unit','<?php echo $ingredientArray[$i][0]; ?>')">

和js将是

function saveToDatabase(editableObj,column,id) {
       var $selected = $(this).find(':selected');   
       previous= $selected.text();
       alert(previous);
    }

答案 1 :(得分:1)

您正在做的是在onchangefocus事件上触发一项功能。它会在值发生变化时触发。所以你无法获得以前的价值。

您应该使用的事件是onclick,它将为您提供之前的值,然后可以触发onchange以获取更改的值。如果您使用的是jQuery,我建议使用以下策略:

var previous;

    $("select").on('focus', function () {
        // Store the current value on focus and on change
        previous = this.value;
    }).change(function() {
        // Do something with the previous value after the change
        alert(previous);

        // Make sure the previous value is updated
        previous = this.value;
    });

您可以在此处找到它:https://stackoverflow.com/a/4076949/1957479