Trigger Click无法使用pickadate.js?

时间:2014-04-23 04:03:12

标签: javascript jquery

我正在尝试触发click方法,但它无法正常工作。请帮我找一个解决方案

$( '.New ').live( "click", function() {
    alert("hay");
    $(this).addClass("New1");
    datePick () ;
    jQuery('.New1').trigger('click');
    jQuery('.New1')[0].click();
})
$( '.New1 ').live( "click", function() { 
    datePick () ;
})
function datePick () {
    alert("yes");
    var $input =  $( '.New1' ).pickadate({
       weekdaysShort: [  'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa','Su' ],
       showMonthsShort: true,
       disable: [
           1, 2, 3,4
       ],
       min: [2014,3,20],
       max: [2014,7,14],
       today: false,
       clear:false
       });
     var picker = $input.pickadate('picker'); 
     picker.on('open', function() {
        console.log('Didn’t open.. yet here I am!')
     })
}

我用它来获取日期http://amsul.ca/pickadate.js/index.htm

2 个答案:

答案 0 :(得分:1)

尝试使用on()代替live()

$( '.New').on( "click", function() {
    alert("hay");
    $(this).addClass("New1");
    datePick () ;
    jQuery('.New1').trigger('click');// using only trigger will work here
})
$( document).on( "click",'.New1', function() { // on for delegation
    datePick () ;
})
function datePick () {
    alert("yes");
    var $input =  $( '.New1' ).pickadate({
       weekdaysShort: [  'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa','Su' ],
       showMonthsShort: true,
       disable: [
           1, 2, 3,4
       ],
       min: [2014,3,20],
       max: [2014,7,14],
       today: false,
       clear:false
       });
     var picker = $input.pickadate('picker'); 
     picker.on('open', function() {
        console.log('Didn’t open.. yet here I am!')
     })
}

答案 1 :(得分:0)

将来提及此问题的任何人,event.stopPropagation();都是关键,如封闭式git问题#481中所述。

您应该使用pickadate picker.open();而不是触发点击。在这里发布样本。 Checkout live sample here.

<强> HTML:

<input type="text" class="datepicker" />
<button>Click me<br/>to show date picker</button>

<强>的Javascript

var $input = $('.datepicker').pickadate();
var picker = $input.pickadate('picker');
picker.on('open', function() {
    console.log('Opened.. and here I am!');
})

$('button').on('click', function(event) {
    event.stopPropagation();
    picker.open();
});