我有一个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;
答案 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>