我有两个数组,一个具有输入名称,另一个具有给出每个输入的值。有7个输入,所以我做了一个循环,用它的值填充每个输入,然后使它在输入集中时文本消失,如果没有输入,则恢复原始值文本。这可以通过使用jQuery的循环来完成吗?在我看来,.live和.bind不可能达到这个目的。我会在每个输入事件焦点和模糊事件中硬核吗?
for (var i=0;i<7;i++) {
$('#user_' + input_names[i]).attr('value', default_values[i]);
$('#user_' + input_names[i]).live("blur", function(){
if(this.value == '')this.value=default_values[i];
});
$('#user_' + input_names[i]).live("focus", function(){
if(this.value == default_values[i])this.value='';
});
}在这里进行更新,根据Eric的请求释放数组:
var input_names = ['username', 'password'];
var default_values = ['Username', 'Password'];
for (var i=0;i<2;i++) {
$('#user_' + input_names[i]).attr('value', default_values[i]);
$('#user_' + input_names[i]).blur(function(){
if(this.value == '')this.value=default_values[i];
});
$('#user_' + input_names[i]).focus(function(){
if(this.value == default_values[i])this.value='';
});
}发布于 2011-06-08 17:23:39
看起来您在寻找HTML5 placeholder属性。只需将HTML更改为:
<input id="user_username" placeholder="Username" />
<input id="user_password" placeholder="Password" />如果您想要向后兼容,有一个jQuery插件。引用插件后,只需执行以下操作:
$('input[placeholder]').placeholder();至于您的初始代码有什么问题,我怀疑有一个闭包问题,而i保留了7的值。
var inputDefaults = {username: 'Username', password: 'Password'};
$.each(inputDefaults, function(field, defaultValue) {
$('#user_' + field)
.attr('value', defaultValue);
.blur(function() {
if($(this).val() == '')
$(this).val(defaultValue);
})
.focus(function(){
if($(this).val() == defaultValue)
$(this).val('');
});
});https://stackoverflow.com/questions/6282673
复制相似问题