【问题标题】:Dynamically remove Characters from Textarea从 Textarea 中动态删除字符
【发布时间】:2016-11-17 14:14:45
【问题描述】:

我有一个文本区域,它有一个动态最大长度,具体取决于下拉菜单

我有一种情况,
如果用户选择选择具有更长 maxlength 的选项,即。 "b" 分情况,
然后输入字符
和后来的
选择具有较短最大长度的选项,即。在我的情况下是“a”


我需要删除textarea中的额外数量的字符,选择了从下拉下拉下拉下拉的更长选项

这是一个示例代码:

var maxLen;

function lengthChange() {
  var id = $('#ta').attr("id");
  var dropdown = $('#choice').val();
  var taValue = $('#ta').val();
  var len = taValue.length;
  if (dropdown == "a") {
    maxLen = "5";
    $('#' + id).attr("maxlength", maxLen);
  } else {
    maxLen = "10";
    $('#' + id).attr("maxlength", maxLen);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="choice" name="choice" onchange="lengthChange()">
  <option value="a">a</option>
  <option value="b">b</option>
</select>

<textarea id="ta" name="ta" rows="4" cols="20" maxlength="5">
</textarea>

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    在你的 lengthChange() 函数的底部添加如下内容:

    // Grab current textarea value
    var text = $('#'+id).val();  
    // Set textarea value to substring of up to length maxLen
    $('#'+id).val(text.substr(0, maxLen));  
    

    无论 maxLen 是什么数字,这个解决方案都可以工作,即使 textarea 的内容比 maxLen 短。

    【讨论】:

    • 文本已经定义在:var taValue = $('#ta').val();
    • @DaniP,我曾设想将我的行放在 if/else 块下方。这样可以容纳两个以上的长度,并且在考虑所有可能的下拉值之后,无论 maxLen 碰巧是什么,都会被容纳。
    • @YosvelQuintero,是的,OP 的代码中还有许多其他低效之处。但是由于我建议在功能块的最底部添加我的 sn-p,它使 OP 可以灵活地对其功能进行其他更改,之后taValue 可能已过时,并且仍然依赖于我放在那里的内容。不过你的意思是明白的。
    【解决方案2】:

    var maxLen;
    
    function lengthChange()
    {
        var $ta = $('#ta'),
            dropdown = $('#choice').val(),
            taValue = $ta.val();
    
        maxLen = dropdown === 'a' ? 5 : 10;
        $ta
            .attr('maxlength', maxLen)
            .val(taValue.substr(0, maxLen));
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <select id="choice" name="choice" onchange="lengthChange()">
      <option value="a">a</option>
      <option value="b">b</option>
    </select>
    
    <textarea id="ta" name="ta" rows="4" cols="20" maxlength="5">
    </textarea>

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 2011-05-24
      • 2013-10-25
      • 2023-04-01
      • 1970-01-01
      • 2015-11-14
      相关资源
      最近更新 更多