Jquery选择选项并在更改时获取值仅工作一次(在页面加载时)

时间:2016-05-01 12:03:39

标签: javascript jquery select onchange

我选择了出生日期字段,并希望根据选择设置一些限制

因此,我有所有选择字段的选项下拉列表。

如果有人选择2010年作为年份,则应禁用9-12个月。但是我被困了,因为每次做出选择时我都无法让脚本加载年份的值。它仅在页面加载时触发,当我选择年份时没有任何反应,它应该输出" alert" (在我的例子中)。

选择

<select name="student_birth_year[]" class="birth_year">
    <option>1900</option>
    <option>1901</option>
    <option>1902</option>
    <option>....</option>
    <option>2010</option>
</select>
<select name="student_birth_month[]" class="birth_month">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>...</option>
    <option>12</option>
</select>
<select name="student_birth_day[]" class="birth_day">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>...</option>
    <option>31</option>
</select>

JQUERY:

$('.s_dob').on("change", ".birth_year" , function() {
    var birth_year=$(this).val();
        alert( this.value );
    if(birth_year==2010){
        $('.birth_month option').prop('disabled',true);
    }
});

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

使用简单的选择元素时,您会遇到一些问题,因为不同的月份有不同的天数。考虑使用现成的解决方案:Combodate

不幸的是,Combodate没有禁用API功能。但你总是可以使用jQuery来做到这一点:

$('.combodate').on("change", ".year-select" , function() {
  var year = $(this).val();
  if(parseInt(year)===2010){
    for(i = 9; i <= 12; i++) {
      $('.combodate .month-select option[value="'+i+'"]').attr('disabled','disabled');
    }
  }else{
     $('combodate .month-select option').removeAttr('disabled');
  }
});