【发布时间】:2014-05-06 17:14:54
【问题描述】:
我有一个包含一些必填字段的表单。我使用这样的代码在用户为空时通知用户:
$(document).ready(function() {
$('input.required:text').focus(function() {
$(this).css({'background-color': '#FFF'});
});
$('input.required:text').blur(function() {
if ($(this).val() == '') {
$(this).css({'background-color': 'rgba(222, 41, 30, 1)'});
}
});
})
问题是我还有一个“添加”按钮,它可以通过运行这个函数来克隆一个隐藏的表单:
function addlocation() {
var clone = $('div.location-info-new').clone();
clone.addClass('location-info');
clone.find('form').addClass('ready');
clone.removeClass('location-info-new');
clone.appendTo('div.locations');
clone.find('input.required:text').focus(function() {
$(this).css({'background-color': '#FFF'});
});
clone.find('input.required').each(function (i, v) {
$(this).css({'background-color': 'rgba(222, 41, 30, 1)'});
});
}
我必须在此处添加背景颜色更改,否则它们在克隆表单上根本不起作用。还有一个问题。这些字段最初会在新表单上正确显示为红色,当它们获得焦点时它们甚至会变为白色。不幸的是,如果用户给输入框焦点,不输入任何内容,然后移除焦点,输入框不会变回红色。在原始表单上,这可以正常工作。
为什么 document.ready 的背景颜色变化没有应用于我的克隆表单?
【问题讨论】:
-
你真的应该提供一个jsFiddle
-
请改用delegated events。 “委托事件的优点是它们可以处理来自后代元素的事件,这些事件会在以后添加到文档中。”
标签: javascript jquery css