搜索堆栈溢出(jquery select change event get selected option)并尝试使用代码但没有得到任何位置。 当选项被更改时,放在一起的值会产生一个var,它指向一个位置,例如选择Jan和1st进行:' 0/0/1'所以var data_location =(' 0/0/1')。
$('select').on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
});
var data_location = (this.value);
// trying to achieve var data_location = ('0/0/1');

<table>
<tr>
<td>
<select name="month">
<option value="0/0/">Jan</option>
<option value="0/1/">Feb</option>
<option value="0/2/">Mar</option>
</select>
</td>
<td>
<select name='day'>
<option value="1"> 1st</option>
<option value="2"> 2nd</option>
</select>
</td>
</tr>
</table>
&#13;
答案 0 :(得分:1)
你必须确保你有这两种信息......
需要使用在全局范围内声明的变量。
// Define global variables.
var month;
var day;
var data_location;
// Month change
$("[name='month']").on('change', function (e) {
month = $(this).val();
});
// Day change
$("[name='day']").on('change', function (e) {
day = $(this).val()
});
// All change
$("select").on("change",function(){
// Set data_location only if both infos are present.
if(typeof(month)!="undefined" && typeof(day)!="undefined"){
data_location = month+day;
console.log(data_location)
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<select name="month">
<option value="0/0/">Jan</option>
<option value="0/1/">Feb</option>
<option value="0/2/">Mar</option>
</select>
</td>
<td>
<select name='day'>
<option value="1"> 1st</option>
<option value="2"> 2nd</option>
</select>
</td>
</tr>
</table>
&#13;
答案 1 :(得分:0)
你的jQuery代码没什么问题。相反,问题在于您对异步代码的理解。
$('select').on('change', function () {
alert(this.value);
});
基本上,因为事件发生在某个未知的时间点,事件处理程序需要处理更改事件触发后应该发生的事情,这发生在回调函数中。
阅读:What is the difference between synchronous and asynchronous programming?