【问题标题】:How to add default value for html <textarea>? [closed]如何为 html <textarea> 添加默认值? [关闭]
【发布时间】:2011-08-25 19:40:25
【问题描述】:

我想为我的 html &lt;textarea&gt; 设置一个默认值。我从材料中读到,要添加默认值,您必须执行&lt;textarea&gt;This is default text&lt;/textarea&gt; 之类的操作。我这样做了,但它不起作用。什么是正确的做法?

【问题讨论】:

  • 你展示的方式就是它应该如何工作。如果没有,请显示您的 HTML 代码
  • 请显示您的 html...
  • 问题的答案套件没有其中记录的代码尝试。让我们在没有这种尝试的情况下处理这个问题,这样这个问题就不会因为“没有代码”或“不能再被复制”的密切原因而受到影响。

标签: html textarea


【解决方案1】:

这是我的jsFiddle 示例。这很好用:

<textarea name='awesome'>Default value</textarea>

【讨论】:

  • .NET Core 使用asp-for 的开发人员必须在模型类中使用构造函数来设置默认值,因为这个答案对他们没有帮助
  • @ShadiNamrouti 虽然这当然是真的,但这不是针对 .Net Core 的问题。这个问题实际上比 .Net Core 早了几年。
  • 我来到这里正是因为 Andrew Jackman 的回应WASN'T 奏效。 Shadi Namrouti 解释了原因:如果您有一个 Asp.Net Core Razor 页面,并且您正在使用“asp-for”……那么您需要在模型构造函数中设置默认值。谢谢你,沙迪!
  • 是的,@ShadiNamrouti 说的很有帮助。现在是 2020 年,我正在阅读它:) 非常感谢。
【解决方案2】:

您可以使用placeholder Attribute,它不会添加默认值,但可能是您需要的:

<textarea placeholder="this text will show in the textarea"></textarea>

在这里查看 - http://jsfiddle.net/8DzCE/949/

重要提示(正如 Jon Brave 在 cmets 中所建议的那样)

占位符属性不设置文本区域的值。而是“占位符属性表示一个简短的提示(单词或短语),旨在在控件没有值时帮助用户输入数据”[并且一旦用户单击文本区域,它就会消失]。它永远不会充当控件的“默认值”。如果需要,您必须将所需的文本放在 Here is the actual default value 中,根据此处的其他答案

【讨论】:

  • 您应该明确placeholder 没有设置textarea。而是“占位符属性表示一个简短的提示(单词或短语),旨在在控件没有值时帮助用户输入数据”[并且一旦用户单击文本区域,它就会消失]。它永远不会充当控件的“默认值”。如果需要,您必须按照此处的其他答案将所需文本放入 &lt;textarea&gt;Here is the actual default value&lt;/textarea&gt; 中。
  • 这实际上是一个非常危险的解决方案。请不要将占位符与默认值混淆。
  • @Qwerty - 是的,我们不应该将占位符与默认值混淆。但是危险....您能否说明任何示例/案例在何处以及如何造成危险(能够或可能造成伤害或伤害)?
  • 占位符不会发送表单。如果您或您的用户希望它发送,那将是危险的。
  • 如果该值不会被提交,它不是一个默认值,而是一个提示。如果我正在寻找一个默认值,我希望它表现得像一个默认值,危险的是它没有表现出预期的行为。假设此解决方案将解决所要求的问题是危险的。但是您可以正确地假设我确实在寻找 A,但要求的是 B。如果您在答案中含蓄地声明了这一点,那么您的答案将是合法的。你说得对,这是因为缺乏知识,但是寻找这个答案的人确实缺乏这种知识。
【解决方案3】:

如果您想将数据库中的信息带入 textarea 标签进行编辑: 输入标签不显示占几行的数据:rows不行,标签输入是一行。

<!--input class="article-input" id="article-input" type="text" rows="5" value="{{article}}" /-->

textarea 标签没有,但可以很好地与车把配合使用

<textarea class="article-input" id="article-input" type="text" rows="9" >{{article}}</textarea> 

【讨论】:

  • 这是有角度的
【解决方案4】:

以防万一您在项目中使用 Angular.js(就像我一样)并为您的 &lt;textarea&gt; 设置了 ng-model,在内部设置默认值,如下所示:

<textarea ng-model='foo'>Some default value</textarea>

...行不通!

您需要在相应的控制器中将默认值设置为textarea的ng-model或使用ng-init

示例 1(使用 ng-init):

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', [ '$scope', function($scope){
  // your controller implementation here
}]);
<!DOCTYPE html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <meta charset="utf-8">
    <title>JS Bin</title>
  </head>
  <body ng-app='myApp'>
    <div ng-controller="MyCtrl">
      <textarea ng-init='foo="Some default value"' ng-model='foo'></textarea>
    </div>
  </body>
</html>

示例 2(不使用 ng-init):

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', [ '$scope', function($scope){
  $scope.foo = 'Some default value';
}]);
<!DOCTYPE html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <meta charset="utf-8">
    <title>JS Bin</title>
  </head>
  <body ng-app='myApp'>
    <div ng-controller="MyCtrl">
      <textarea ng-model='foo'></textarea>
    </div>
  </body>
</html>

【讨论】:

【解决方案5】:

一些注释和说明:

  • placeholder='' 插入您的文本,但它显示为灰色(以工具提示样式格式),并且在单击该字段的那一刻,您的文本将被一个空文本字段替换。

  • value='' 不是&lt;textarea&gt; 属性,仅适用于&lt;input&gt; 标签,即&lt;input type='text'&gt; 等。我不知道为什么HTML5 的创建者决定不合并它,但目前就是这样。

  • &lt;textarea&gt; 元素中插入文本的最佳方法已在此处正确概述为:&lt;textarea&gt; Desired text to be inserted into the field upon page load &lt;/textarea&gt; 当用户单击该字段时,他们可以编辑 文本并保留在字段中(与 placeholder='' 不同)。

  • 注意:如果在&lt;textarea&gt;&lt;/textarea&gt; 标记之间插入文本,则不能使用placeholder='',因为它会被插入的文本覆盖。

【讨论】:

  • &lt;textarea&gt; 支持多行内容,很难挤进value 属性:)
【解决方案6】:

另外,这对我来说效果很好:

<textarea class="form-control" rows="3" name="msg" placeholder="Your message here." onfocus='this.select()'>
<?php if (isset($_POST['encode'])) { echo htmlspecialchars($_POST['msg']);} ?>
</textarea>

在这种情况下,$_POST['encode'] 来自:

<input class="input_bottom btn btn-default" type="submit" name="encode" value="Encode">

PHP 代码被插入到和标记之间。

【讨论】:

    【解决方案7】:

    占位符不能设置文本区域的默认值。你可以使用

    <textarea rows="10" cols="55" name="description"> /*Enter default value here to display content</textarea>
    

    如果您将其用于数据库连接,则这是该标签。如果您使用 php 以外的其他语言,您可以使用不同的语法。对于 php:

    例如:

    <textarea rows="10" cols="55" name="description" required><?php echo $description; ?></textarea>
    

    必需的命令可以最大限度地减少使用 php 检查空字段所需的工作量。

    【讨论】:

      【解决方案8】:

      您可以使用 this.innerHTML。

      &lt;textarea name="message" rows = "10" cols = "100" onfocus="this.innerHTML=''"&gt; Enter your message here... &lt;/textarea&gt;

      当文本区域被聚焦时,它基本上使文本区域的innerHTML成为一个空字符串。

      【讨论】:

      • 这是一个非常好的答案 :) 谢谢。
      【解决方案9】:

      请注意,如果您在 textarea 渲染后对其进行了更改;您将获得更新的值而不是初始化的值。

      <!doctype html>
      <html lang="en">
          <head>
              <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
              <script>
                  $(function () {
                      $('#btnShow').click(function () {
                          alert('text:' + $('#addressFieldName').text() + '\n value:' + $('#addressFieldName').val());
                      });
                  });
                  function updateAddress() {
                      $('#addressFieldName').val('District: Peshawar \n');
                  }
              </script>
          </head>
          <body>
              <?php
              $address = "School: GCMHSS NO.1\nTehsil: ,\nDistrict: Haripur";
              ?>
              <textarea id="addressFieldName" rows="4" cols="40" tabindex="5" ><?php echo $address; ?></textarea>
              <?php echo '<script type="text/javascript">updateAddress();</script>'; ?>
              <input type="button" id="btnShow" value='show' />
          </body>
      </html>
      

      如您所见,textarea 的值将不同于关注 textarea 的开始标签和结束标签之间的文本。

      【讨论】:

        【解决方案10】:

        您还可以添加“值”属性并将其设置为:

        
        <textarea value="your value"> </textarea>
        
        

        【讨论】:

        • 来自MDN documentation:“&lt;textarea&gt;不支持value属性”。
        • 在 React 中编写值得与 HTML 规范保持一致。
        猜你喜欢
        • 1970-01-01
        • 2019-09-07
        • 2016-06-21
        • 1970-01-01
        • 2017-09-27
        • 2013-03-31
        • 2013-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多