添加验证,不允许使用jQuery字数提交表单

时间:2015-05-11 16:50:01

标签: javascript jquery forms validation

我有一个文本区域,其中不能超过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);
        }
    });
 });  

2 个答案:

答案 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