我的同事给了我一段代码,阻止用户在textarea中输入有限的输入。代码完美无缺
var words = this.value.match(/\S+/g).length;
if (words > 10) {
var trimmed = $(this).val().split(/\s+/, 10).join(" ");
$(this).val(trimmed + " ");
}
else {
$('#word_left').text(10-words);
}
工作演示:http://jsfiddle.net/3qHwG/
我已经读过jQuery可以通过多种方式高效编写,我想知道如果没有if-else或使用不同的方法可以重写这段代码吗?
感谢您提供的任何帮助,最终会增加我的知识。
答案 0 :(得分:1)
这扩展了可读性:
$("#cnt").on('keyup', function (e) {
var val = $(this).val(),
// if val is empty, set trimmed to empty array, which translates to 'zero' length
trimmed = val ? val.split(/\s+/, 10) : [];
if (!((e.keyCode || window.event.keyCode) === 8)) // if not a backspace
$(this).val(trimmed.join(" "));
$("#word_left").text(10 - trimmed.length);
});
<强> DEMO 强>
每次只执行一次.split
的操作,这比你的更好,因为你的操作不仅会执行一次操作,而且如果单词的限制超出,也会执行另一次操作。
希望它有所帮助!