我拧了一个代码,用灰色显示textarea中的用户提示;
理念是下一个:
1)最初在区域是“请在那里打字询问”灰色;
2)如果用户点击它,颜色变为黑色,文本变为''。这部分工作正常
3)如果是用户类型,而不是删除(即左侧字段空白),而不是我们需要将“请在那里输入您的查询”以灰色显示;这在Chrome中不起作用,在Firefox中不起作用。
它什么都不显示。当我使用chrome检查器时,它会显示
element.style {color:rgb(141,141,141); }
什么是正确的,并且“请在HTML中键入您的查询”,这也是正确的,但字段是空的。可能是什么问题??? 我特意放了console.log,它们也显示应该是......
的输出这是HTML:
<textarea name='contact_text' id='contact_text'
onclick='text_area_text_cl();' onBlur='text_area_text_fill();'>
</textarea>
<script>
var contact_text_changed = false;
var contact_contacts_changed = false;
function text_area_text()
{
if (contact_text_changed == false)
{
$("#contact_text").css("color","#8d8d8d");
$("#contact_text").html('Please, type your enquiry there');
}
else
{
$("#contact_text").css("color","#000000");
}
// Write your code here
};
function text_area_text_cl()
{
if (contact_text_changed == false)
{
$("#contact_text").text('');
$("#contact_text").css("color","#000000");
console.log('sdfdfs111');
contact_text_changed = true;
}
};
function text_area_text_fill()
{
if ($("#contact_text").val() == '')
{
contact_text_changed = false;
$("#contact_text").css("color","#8d8d8d");
$("#contact_text").html('Please, type your enquiry there');
//document.getElementById('contact_text').innerHTML = 'Please, type your enquiry there'
console.log('sdfdfs');
}
else
{
console.log('__');
}
};
// call funcitons to fill
text_area_text();
</script>
答案 0 :(得分:3)
要设置<textarea>
的值,您需要使用.val()
:
$("#contact_text").val('');
或
$("#contact_text").val('Please, type your enquiry there');
等。让“占位符”代码正常工作很棘手。 Newer browsers allow:
<textarea placeholder='Please, type your enquiry there' id='whatever'></textarea>
他们会为你管理一切。
编辑 - 来自评论,这里有一个解释,为什么.html()
似乎有效(好吧,它 工作,但继续阅读) 。 <textarea>
元素的标记内容(即元素中包含的DOM结构)表示<textarea>
的初始值。在任何用户交互之前(和/或在JavaScript触及DOM的“value”属性之前),这就是显示为字段值的内容。然后,更改DOM的那一部分会更改该初始值。但是,一旦进行了一些用户交互,初始值就不再与页面视图相关,因此不会显示。仅显示更新的值。