我不记得为什么我在下面的代码中使用this.defaultValue ? this.defaultValue : '':
,而不仅仅是this.defaultValue
。
$('input:text, textarea').blur(function() {
if ($.trim(this.value) == ''){
this.value = (this.defaultValue ? this.defaultValue : '');
}
});
为什么不这样:
$('input:text, textarea').blur(function() {
if ($.trim(this.value) == ''){
this.value = this.defaultValue;
}
});
答案 0 :(得分:1)
因为如果未定义defaultValue
,您将获得'undefined'
而不是''
答案 1 :(得分:1)
这是一种安全措施。如果this.defaultValue
为undefined
,则返回空字符串,避免this.value
接收未定义。
问题是这个属性仅适用于<input>´ and
`,几乎限制了这种功能的范围。例如,在表单中选择是很常见的。
更直接的方法是使用在"data-"
属性中存储默认值。这是一个HTML5功能,但它具有一种向后兼容性,因为它们只是html属性。
<select data-defaultValue="1">
<option value="1">One</option>
<option value="2">Two</option>
</select>
您可以使用以下方式访问该属性:
$('select').attr('data-defaultValue');
// or
$('select').data('defaultValue');
更多信息:
答案 2 :(得分:0)
在相关说明中,为什么不使用HTML5的占位符属性 - 您不必使用defaultValue。 http://www.w3schools.com/html5/att_input_placeholder.asp
据我所知,它不支持IE,但在其他人身上运作良好