我正在动态创建一个表,并希望在动态创建的日期文本框中捕获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');
});
});
谢谢!
答案 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结构中were
,are
和will be
的元素选择器
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()
方法将事件绑定到动态创建的元素。