JavaScript没有选择带选项的值

时间:2018-01-11 23:19:58

标签: javascript jquery html html5

搜索堆栈溢出(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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

你必须确保你有这两种信息......

需要使用在全局范围内声明的变量。

&#13;
&#13;
// 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;
&#13;
&#13;

答案 1 :(得分:0)

你的jQuery代码没什么问题。相反,问题在于您对异步代码的理解。

$('select').on('change', function () {
    alert(this.value); 
});

基本上,因为事件发生在某个未知的时间点,事件处理程序需要处理更改事件触发后应该发生的事情,这发生在回调函数中。

阅读:What is the difference between synchronous and asynchronous programming?