未在部分代码上触发focusout事件

时间:2017-06-24 22:30:14

标签: javascript jquery focusout

我希望在class =" date"并且驻留在具有class =' datatable'的表中,用于DOM中的元素和动态添加的元素。对于动态添加的元素(使用createElement和appendChild),以下代码可以成功运行:

$('.datatable').on('focusout','tr td input', function(){
    if (this.class == 'date') {
        this.value = dateValid(this.value);
    }
});

但是,对于加载到DOM中的元素,上述代码不起作用。我也试过下面的代码,但它也不起作用:

$('.date').focusout(dateValid(this.value));

未触发焦点事件的输入元素的HTML:

<table class="datatable">
    <tr>
        <td>Prospective Effective Date</td>
        <td><input class="date" type="text" name="effectivedate"></td>
    </tr>
    <tr>
        <td>Prospective Expiration Date</td>
        <td><input class="date" type="text" name="expirationdate"></td>
    </tr>
</table>

我是JavaScript的新手,感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我认为问题在于保留关键字“class”:

if (this.class == 'date') {
 //...
}

使用className

if (this.className === 'date') {
 //...
}

如果这不能解决问题。您可能会在现有表格中添加其他table.datatable元素而不是tr元素。你可以通过将focusout绑定到document

来解决这个问题
$(document).on('focusout','input.date', function(){
 //...
});
相关问题