【发布时间】:2011-07-24 00:39:36
【问题描述】:
转换它的目的是让我可以了解它是如何在没有 jquery 的情况下完成的。
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Focus auto-focus fields
$('.auto-focus:first').focus();
// Initialize auto-hint fields
$('INPUT.auto-hint, TEXTAREA.auto-hint').focus(function(){
if($(this).val() == $(this).attr('title')){
$(this).val('');
$(this).removeClass('auto-hint');
}
});
$('INPUT.auto-hint, TEXTAREA.auto-hint').blur(function(){
if($(this).val() == '' && $(this).attr('title') != ''){
$(this).val($(this).attr('title'));
$(this).addClass('auto-hint');
}
});
$('INPUT.auto-hint, TEXTAREA.auto-hint').each(function(){
if($(this).attr('title') == ''){ return; }
if($(this).val() == ''){ $(this).val($(this).attr('title')); }
else { $(this).removeClass('auto-hint'); }
});
});
</script>
</head>
<body>
<form>
Email: <input type="text" name="email" id="email" title="i.e. me@example.com" class="auto-hint" />
</form>
</body>
</html>
我在这里找到了这段代码: Html placeholder text in a textarea form
【问题讨论】:
-
那个 jQuery 代码质量不好(仅供记录)。
-
很高兴知道,它到底有什么不好?这段代码来自一个教程,见上面的链接,所以如果教错了就不好了)
-
1.相同的查找 -
$('INPUT.auto-hint, TEXTAREA.auto-hint')- 连续执行 3 次,而不是仅仅被链接, 2.this.value和this.title比$(this).val()和$(this).val()和$(this).attr('title')更快,更易读, 3. 约定类型选择器是小写的(input而不是INPUT),4. 常规比较是在一个操作数为空字符串(x == '')的情况下完成的 - 如果其中一个操作数是假的,则不应执行常规比较价值。相反,应该使用严格的比较。是的,我担心教程会教坏做法。 -
顺便说一句,为什么投反对票?什么能让这个问题变得更好?投反对票时,最好说明原因,这样我们就可以学到一些东西并改进问题。
-
我的猜测:缺乏投资。您拥有来自第三方教程的代码,并希望将其转换为非 jQuery 代码,但您没有对此进行投资(您没有向我们展示您自己尝试过这样做 - 无论您的 JavaScript 多么糟糕知识是)。我个人并不关心提问者在他们的问题上投入了多少——我只是喜欢回答与 JavaScript 相关的一般问题
:)。但是,有些人会因为这个原因投反对票……
标签: jquery textarea watermark placeholder