事件发生但脚本在事件发生两次之前不会执行

时间:2012-09-11 07:29:56

标签: jquery jquery-ui datepicker

我希望在下拉列表具有特定选定值时将日历设置为输入字段。 我遇到的问题是事件发生但脚本在点击发生多次之前没有执行,我尝试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/

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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/