0

我正在尝试使用 jQuery 在输入短于给定限制时显示警报消息。不幸的是,我的代码不起作用,因此寻求您的帮助。

这是我正在使用的代码。

HTML

<input type="textarea" name="message" id="message" row="20" col="50" />
<input type="submit" name="submit" id="submit" value="Send Message" />

JavaScript

<script type="text/javascript">
    jQuery(document).ready(function($) {
        $("input:submit[name='submit']").on("click",function() {
        var msgwords = $("input:textarea[name='message']").val().replace( /[^\w ]/g, "" ).split( /\s+/ ).length;
        var minwords = 10;
            if (comwords < minwords) {
                alert("Your Comment is too short.");
            }
        });
    });
</script>
4

2 回答 2

1

你想切换if(comwords < minwords)if(msgwords < minwords)


这是您的完整工作代码。随心所欲地改变。

<script type="text/javascript">
/* Use $ instead of `jQuery`, it's nicer */
$(document).ready(function() {
    /* Reference the button ID (it's unique...) */
    $("#submit").click(function(e) {
        /* Your function to replace works nicely */
        var msgwords = $("#message").val().replace( /[^\w ]/g, "" ).split( /\s+/ ).length;
        var minwords = 10;
        if (msgwords < minwords) {
            e.preventDefault();
            alert("Your Comment is too short.");
        } 
    });
});
</script>

此代码引用了确切的 ID(一旦您知道它正在工作,您就可以更改它)。您检查单词而不是字符的拆分功能也可以很好地工作。最后,e.preventDefault()如果评论太短,阻止按钮提交。


我还想指出,您可以使用e.preventDefault();or return false,后者相当于e.preventDefault();and e.stopPropagation();。这可以防止该事件传播(或“冒泡”)DOM。

于 2013-01-20T15:03:41.020 回答
1

有两个问题。

  1. 没有这样的:textarea伪选择器。
  2. comwords没有定义。

:textarea无论如何,您都可以从选择器中删除。并使用msgwords而不是comwords.


我会这样做:

  • 用于.form()绑定到submit事件。另外,防止表单提交。
  • 使用 . 清理前导和尾随空格String#trim
  • 利用id元素的属性;)

沿着这些思路:

<form>
  <input type="textarea" name="message" id="message" row="20" col="50" />
  <input type="submit" name="submit" id="submit" value="Send Message" />
</form>

jQuery(function($) {
  $("form").submit(function () {
    var minwords = 10;
    /* Trim leading and trailing spaces */
    var message = $("#message").val().trim();
    var words = message.split(/\s+/).length;
    /* Disambiguous matches for an empty string  */
    if ((message == "") || (words < minwords)) {
      alert("Your comment is too short.");
      /* Prevent form submission by returning false */
      return false;
    }
    return true;
  });
});
于 2013-01-20T15:04:40.663 回答