簡體   English   中英

使用jQuery輸入太短時顯示警報消息

[英]Show Alert Message When Input Is Too Short using jQuery

我嘗試使用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>

您想將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(); return false ,后者等於e.preventDefault(); e.stopPropagation(); 這樣可以防止該事件傳播(或“冒泡”)DOM。

有兩個問題。

  1. 沒有這樣的:textarea偽選擇器。
  2. comwords未定義。

:textarea從選擇器中刪除: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;
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM