我正在尝试一次为多个输入设置默认值,在焦点上删除该值并在输入为空时再次将其设置为模糊。为此,使用 jQuery,我得到了以下代码:
var settings = {
value: '',
focusColor: 'black',
blurColor: '#CCC',
value : 'test'
};
$.each($('input'), function(index, el) {
$(el).on('blur', function(ev) {
$el = $(this);
console.log('blur ' + $el.attr('value') + ' ' + $el.attr('id'));
if ($el.attr('value') == '')
$el.attr('value', settings.value).css('color', settings.blurColor);
}).on('focus', function(ev) {
console.log('focus ' + $el.attr('value') + ' ' + $el.attr('id'));
if ($el.attr('value') == settings.value)
$(this).attr('value', '').css('color', settings.focusColor);
});
$(el).trigger('blur');
});
有这个 HTML:
<input id="text" type="text" />
<input id="email" type="email" />
问题是,如果我关注第一个输入,然后紧接着第二个,触发的事件是:关注第一个输入,模糊第一个输入并再次关注第一个输入。因此,如果我在第一个中输入一些内容,然后再次关注第二个和第一个,它不会删除示例文本,而是会删除我输入的内容。
您可以在此处查看(不)工作示例。打开 JavaScript 控制台,您会清楚地看到错误行为。</p>