1

当下拉列表具有特定的选定值时,我希望将日历设置为输入字段。我面临的问题是事件发生但脚本直到单击发生多次才执行,我尝试clickfocus结果相同!

这是我的代码

 <select name="selectKey" id="selectKey">
   <option value="1" >mail no</option>
   <option value="2" > mail type</option>
   <option value="3"  selected="selected"> mail date</option>
   <option value="4" >title</option>
</select>

<input type="text" name="srchTxt" id="srchTxt" value="">

这是js

$(document).ready(function() {



 $('input[name=srchTxt]').bind('focus', function(event) {
    // event.stopPropagation();

    if ($("select[name='selectKey']").children(':selected').val() == 3) {  
        console.log('ysssssssssssssss');
        $('input[name=srchTxt]').datepicker({
            //   showWeek: true,
            firstDay: 1,
            dateFormat: 'dd/mm/yy'
        })
    }
   });
});​

这是一个演示http://jsfiddle.net/VAvwG/

4

2 回答 2

2

只是添加.datepicker('show')到最后

$(document).ready(function() {
    $('input[name=srchTxt]').bind('focus', function(event) {
        if ($("select[name='selectKey']").val() == 3) {  
            $('input[name=srchTxt]').datepicker({
                firstDay: 1,
                dateFormat: 'dd/mm/yy'
            }).datepicker('show')
        }
    });
});

http://jsfiddle.net/VAvwG/3/

于 2012-09-11T07:37:45.003 回答
1

那是因为您第一次关注输入时datepicker并没有添加它。为什么不使用更改事件?

$(document).ready(function() {
    $('#selectKey').on('change', function(event) {
        if (this.value == 3) {
            $('#srchTxt').datepicker({
                firstDay: 1,
                dateFormat: 'dd/mm/yy'
            })
        }
    }).change()
});

http://jsfiddle.net/VAvwG/5/

于 2012-09-11T07:42:42.817 回答