我使用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
}
请帮帮我。谢谢。
答案 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)
您正在做的是在onchange
或focus
事件上触发一项功能。它会在值发生变化时触发。所以你无法获得以前的价值。
您应该使用的事件是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;
});