【问题标题】:How can I make my placeholder show when the textarea is not selected?当未选择 textarea 时,如何使占位符显示?
【发布时间】:2015-01-29 21:39:45
【问题描述】:

现在,当我单击 textarea 输入文本时,我的 textarea 的背景中会出现一个占位符。

但是,即使我没有在文本区域内单击,我也希望显示占位符。我只想在加载 textarea 时显示文本?

这是占位符的主要代码:

if (selectItem != null) {
            var notesContent = selectItem.description;
            var textarea;
            var browser = BrowserSide.BrowserCompatibility.GetBrowser();

            if (browser == "Explorer") {
                textarea = '<div class="light-list-box" style="padding:10px;width: 100%; height: 100%; border:none "><textarea id="notes-content" class="image-textarea" style="resize: none; width:85%; height:195px; overflow:auto" cols="5" rows="10" name="Note">{0}</textarea></div>';
            } else {
                var placeHolder = BrowserSide.GlobalObjects.getString("TextareaPlaceHolder");
                textarea = '<div class="light-list-box" style="padding:10px;width: 100%; height: 100%; "><textarea placeholder="' + placeHolder + '" id="notes-content" class="image-textarea" style="resize: none; width:85%; height:195px; overflow:auto" cols="5" rows="10" name="Note">{0}</textarea></div>';
            }

            if (notesContent != null && notesContent != '') {
                $('#notes-content').css('padding', '6px');
                textarea = BrowserSide.GlobalObjects.stringFormat(textarea, notesContent);
            }
            else { 
                 textarea = BrowserSide.GlobalObjects.stringFormat(textarea, '');
            }
            updateSelector();

            notes.html('');
            notes.append(textarea);
            notes.show();
        }
    };

当文本区域未在内部选择/单击时,如何使占位符显示?

【问题讨论】:

标签: javascript jquery html placeholder


【解决方案1】:

一个 jquery 解决方案: 您可以使用 .focus().blur() 事件来处理您的 textarea 内容:
所以,当你专注时,你不需要显示任何东西:

$('textarea').focus(function () {$(this).empty()});

当你不专注于它时:

$('textarea').blur(function () {$(this).html('your placeholder...').css('color','gray');});

您还可以检查用户是否输入了任何内容:

$('textarea').blur(function () {
     if ($(this).text().length == 0) 
         $(this).html('your placeholder...').css('color','gray');
});

注意:请记住在加载文档时设置占位符。写一个全局使用的函数就好了:http://jsfiddle.net/vesc1zLy/6/

【讨论】:

    【解决方案2】:

    简单的解决方案:DEMO at JSBin

        <textarea type="text" placeholder="enter your text" 
                  onfocus="this.placeholder = ''" 
                  onblur="this.placeholder = 'enter your text'">
        </textarea>
    

    【讨论】:

      【解决方案3】:

      您可以使用定位的:after 伪元素:

      .light-list-box {
          position:relative;
      }
      
      .light-list-box:after {
           position:absolute;
           top:0;
           left:0;
           content: 'your placeholder text'
      }
      

      【讨论】:

      • 我做不到。我将此 css 重用于另一个我不希望此内容显示的文本区域
      • 然后继承 CSS .light-list-box.placeholder
      猜你喜欢
      • 2015-06-27
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多