动态创建的文本框上的jQuery keypress事件

时间:2011-09-11 15:46:22

标签: jquery events dynamic bind keypress

我正在动态创建一个表,并希望在动态创建的日期文本框中捕获keypress事件。如果我只有一个payment_date textkbox,它很棒,但我有很多。我已经看过了.live但是我太新了解这个问题。请问有人可以针对我吗?以下是带有问题文本框的HTML:

        <?php 
        foreach($student_classes as $class):
            if( $student['student_id'] == $class['student_id'] ) {                
                $i = $class['registration_id'];
                $deleted = FALSE;
        ?>
             <td>
                <input type="text" 
                name="students[<?php echo $i ?>][registration_payment_date]"
                id="payment_date[<?php echo $i ?>]" 
                value="<?= html($class['registration_payment_date']) ?>"
                size='10' maxlength="10" 
                > 
            </td>
       <?php endforeach; ?>

jQuery的:

jQuery(document).ready(function ()
{
       var $payment_date = jQuery('#payment_date');    
       // Format the date as it is entered
          $payment_date.keypress(function(event) {
          DateFormat(this, this.value, event, false, '1');
      });

     // Check to make sure the date is valid
        $payment_date.change(function ()
    {
        if( dateValid(this.value) == false );   
        alert('The date is not valid'); 
    });
}); 

谢谢!

3 个答案:

答案 0 :(得分:4)

虽然jQuery.live()可行,但最好不要以这种方式进行JavaScript开发。

在发出<input>元素时,将“payment_date”添加为类。现在,说

$(".payment_date").bind("keypress", function(event){
    DateFormat(this, this.value, event, false, '1');
}

这样做的好处是它可以适用于任何数量的具有payment_date类的div。

答案 1 :(得分:0)

使用jQuery.live()它将功能添加到DOM结构中werearewill be的元素选择器

http://api.jquery.com/live/

var $payment_date = jQuery('#payment_date');    
   // Format the date as it is entered
  $payment_date.live("keypress",function(event) {
      DateFormat(this, this.value, event, false, '1');
  });

 // Check to make sure the date is valid
    $payment_date.live("change",function ()
{
    if( dateValid(this.value) == false );   
    alert('The date is not valid'); 
});

答案 2 :(得分:0)

现在不推荐使用JQuery live()方法,并从1.9中删除。

您应该使用on()方法将事件绑定到动态创建的元素。