Javascript 注释框文本区域,显示用户聚焦时消失的默认文本

Javascript 注释框文本区域,显示用户聚焦时消失的默认文本,javascript,css,comments,Javascript,Css,Comments,嘿,伙计们,我正在创建一个评论框,我想对评论框做两件事,我认为这需要javascript,但我还不是一个真正的专业使用javascript的人。我想在评论框中显示一些文字,说输入你的评论,当用户点击它时,文字消失。而且,我只想在用户点击评论框时显示提交按钮,你知道我可以用什么方法吗?我已经忍受了纯JavaScript。我已经抽象出了让文本输入/区域显示教学文本的代码,直到聚焦为止 一般而言: 观察输入上的焦点和模糊事件,并根据现有值/有用值更改值和可选类。 观察注释框的焦点和模糊,并更改另一个元

嘿,伙计们,我正在创建一个评论框,我想对评论框做两件事,我认为这需要javascript,但我还不是一个真正的专业使用javascript的人。我想在评论框中显示一些文字,说输入你的评论,当用户点击它时,文字消失。而且,我只想在用户点击评论框时显示提交按钮,你知道我可以用什么方法吗?

我已经忍受了纯JavaScript。我已经抽象出了让文本输入/区域显示教学文本的代码,直到聚焦为止

一般而言:

观察输入上的焦点和模糊事件,并根据现有值/有用值更改值和可选类。 观察注释框的焦点和模糊,并更改另一个元素的CSS类以显示和隐藏它。 如果您使用类似的东西,这会容易一些,因为它已经包含了跨浏览器代码,甚至包括处理自描述部分的插件。如果您愿意使用jQuery,请告诉我,我会用它给您一个更新的答案

编辑:好的,我添加了一个。我决定不使用插件进行自我描述,因为它只有8行。我还更改了该特定示例,使用title属性保存要显示的默认文本

编辑2:根据@Meke指出的问题,我对脚本做了一个小的更新,以处理FireFox重新加载页面并保留默认文本的情况,然后之前没有正确添加类以指示这是默认文本

我还应该注意,我的两个示例都不包括表单的submit事件处理程序,用于删除碰巧仍然显示默认值的输入的值。这段相当琐碎的代码是您想要添加的

还要注意的是,像这样实际更改输入/文本区号的值可能会破坏表单验证,而不准备理解它。

我已经忍受了纯JavaScript。我已经抽象出了让文本输入/区域显示教学文本的代码,直到聚焦为止

一般而言:

观察输入上的焦点和模糊事件,并根据现有值/有用值更改值和可选类。 观察注释框的焦点和模糊,并更改另一个元素的CSS类以显示和隐藏它。 如果您使用类似的东西,这会容易一些,因为它已经包含了跨浏览器代码,甚至包括处理自描述部分的插件。如果您愿意使用jQuery,请告诉我,我会用它给您一个更新的答案

编辑:好的,我添加了一个。我决定不使用插件进行自我描述,因为它只有8行。我还更改了该特定示例,使用title属性保存要显示的默认文本

编辑2:根据@Meke指出的问题,我对脚本做了一个小的更新,以处理FireFox重新加载页面并保留默认文本的情况,然后之前没有正确添加类以指示这是默认文本

我还应该注意,我的两个示例都不包括表单的submit事件处理程序,用于删除碰巧仍然显示默认值的输入的值。这段相当琐碎的代码是您想要添加的


还要注意的是,通过像这样实际更改输入/文本区号的值,可能会破坏表单验证,而不准备理解它。

由于Phrogz jQuery版本不能很好地进行重新加载,因此我决定根据我所知道的,制作我自己的,如下所示:

您所需要做的就是在输入中放置一个占位符=[text],以使其显示此名称,因为HTML5将占位符用于相同的函数

    $('input:text').each(function(){
            $(this).val($(this).attr('placeholder')).css('color','#900');
            $(this).focus(function(){
                // If value is same as 'placeholder', clear field
                if($(this).val() === $(this).attr('placeholder')){
                    $(this).val('').css('color','#000');
                } else { // Else select the whole text (one less click)
                    $(this).select();
                }
            });
            $(this).blur(function(){
                // On blur, if empty field, put placeholder back
                if ($(this).val() === ''){
                    $(this).val($(this).attr('placeholder')).css('color','#900');
                }
            });
        });

由于Phrogz jQuery版本不能很好地处理重新加载,因此我决定根据我所知道的内容制作自己的版本,如下所示:

您所需要做的就是在输入中放置一个占位符=[text],以使其显示此名称,因为HTML5将占位符用于相同的函数

    $('input:text').each(function(){
            $(this).val($(this).attr('placeholder')).css('color','#900');
            $(this).focus(function(){
                // If value is same as 'placeholder', clear field
                if($(this).val() === $(this).attr('placeholder')){
                    $(this).val('').css('color','#000');
                } else { // Else select the whole text (one less click)
                    $(this).select();
                }
            });
            $(this).blur(function(){
                // On blur, if empty field, put placeholder back
                if ($(this).val() === ''){
                    $(this).val($(this).attr('placeholder')).css('color','#900');
                }
            });
        });

纯JavaScript,或者您正在使用库jQuery、MooTools、Prototype、Glow等…?人们似乎迫不及待地想投票结束一个问题。说真的,我们可以小声点,警察!纯JavaScript,或者您正在使用库jQuery、MooTools、Prototype、Glow等…?人们似乎迫不及待地想投票结束一个问题。说真的,我们可以小声点,警察!感谢您在纯JS中所做的一切。是的,如果您能发布jQuery示例,我将不胜感激。@SamGabriel我已经添加了示例。由于您似乎是stackoverflow的新手,我会让您知道,如果您发现一个答案解决了您的问题,您应该接受它,打勾,以便其他人知道这是您推荐的答案。@Phrogz-注意到您的jQuery版本不喜欢重新加载页面,发布了一个我刚刚编写的工作页面。有一件事,我不能
似乎能够实际单击submit按钮,这是为什么?感谢您在纯JS中所做的一切。是的,如果您能发布jQuery示例,我将不胜感激。@SamGabriel我已经添加了示例。由于您似乎是stackoverflow的新手,我会让您知道,如果您发现一个答案解决了您的问题,您应该接受它,打勾,以便其他人知道这是您推荐的答案。@Phrogz-注意到您的jQuery版本不喜欢重新加载页面,发布了一个我刚刚编写的工作页面。有一件事,我似乎不能真正点击提交按钮,为什么?请你详细解释一下你所说的不能很好地重新加载页面是什么意思?您在什么操作系统/浏览器/版本上执行了哪些步骤?除了您所期望的之外,它做了什么?在顶部字段中写入了一些内容,重新加载。文本保持不变,较低字段文本变为黑色而不是灰色。使用OSX,FF,最新版本。谢谢。我已经解决了这个问题。你能详细解释一下你所说的页面重新加载不好是什么意思吗?您在什么操作系统/浏览器/版本上执行了哪些步骤?除了您所期望的之外,它做了什么?在顶部字段中写入了一些内容,重新加载。文本保持不变,较低字段文本变为黑色而不是灰色。使用OSX,FF,最新版本。谢谢。我已经把这个修好了。