0

我希望在带有 class="date" 的输入元素上触发 focusout 事件,并驻留在带有 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));

未触发 focusout 事件的输入元素的 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 很陌生,感谢任何帮助!

4

1 回答 1

1

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

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

利用className

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

如果这不能解决问题。您可能会附加其他table.datatable元素而不是tr现有表中的元素。你可以通过绑定focusoutdocument

$(document).on('focusout','input.date', function(){
 //...
});
于 2017-06-24T22:49:01.720 回答