我有一个文本区域,其中不能超过100个单词。我找到了一个很好的指标脚本,可以对页面上的单词进行倒计时,但是如果用户输入超过100个单词,它仍然允许用户提交。我需要在其中集成验证。 注意:我在其他地方使用validate.js。
$(document).ready(function() {
$("#word_count").on('keyup', function() {
var words = this.value.match(/\S+/g).length;
if (words > 100) {
// Split the string on first 100 words and rejoin on spaces
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
// Add a space at the end to keep new typing making new words
$(this).val(trimmed + " ");
}
else {
$('#display_count').text(words);
$('#word_left').text(100-words);
}
});
});
答案 0 :(得分:2)
为什么不在文本区域添加最大长度属性?它符合您的要求吗?
http://www.w3schools.com/tags/att_textarea_maxlength.asp
不,不是因为计算字符而不是字数。但是,如果您应用该脚本,文本将被修剪,只需要前100个单词。 这条线是
ConcurrentDictionary
其中100是限制
这是我的回答
var trimmed = $(this).val().split(/\s+/, 100).join(" ");
而html是
$.validator.addMethod("wordCount", function(value) {
var words = value.match(/\S+/g).length;
return words < 100;
}, 'You can enter max 100 words');
$("#form").validate({
rules: {
textarea : "wordCount"
}
});
答案 1 :(得分:1)
快速而肮脏的黑客攻击是从$('#display_count')
抓取文本,转换为数字并查看它是否大于或等于100并停止提交表单。由于您使用jQuery Validation Plugin(假设),您可以执行以下操作:
$(".myForm").validate({
submitHandler: function(form) {
var total = parseInt($('#display_count').text(), 10);
if ( total >= 100 ) {
alert ("Max limit reached");
return;
}
$(form).submit();
}
});
更多关于this Fiddle