从Textarea动态删除字符

时间:2016-07-14 15:13:51

标签: javascript jquery html

我有一个textarea,它具有动态最大长度,具体取决于Dropdown

我有一种情况,其中, 如果用户选择选择具有更长maxlength的选项,即。 " b" in case,
然后键入字符
以及之后
选择具有较短maxlength的选项,即。 ""就我而言


我需要从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>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

在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短。

答案 1 :(得分: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>