有什么问题? textarea只显示价值

时间:2013-10-05 13:06:00

标签: javascript jquery html css

我拧了一个代码,用灰色显示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>

1 个答案:

答案 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的那一部分会更改该初始值。但是,一旦进行了一些用户交互,初始值就不再与页面视图相关,因此不会显示。仅显示更新的值。