2012-02-23 59 views
0

我不知道我在做什麼錯,但基本上這是我的。JQuery驗證字符最小值

JQuery的:

$(document).ready(function(){ 
$('form#status_form').submit(function(){ 
     var statusV = $('input#status_updated2').val(); 
     if(statusV.length > 255) 
     { 
     $('em#statusError').fadeIn().fadeOut(5000); 
     } 
     else 
     { 
     //do cool stuff 

     } 
    }); 
}); 

HTML表單,它的距離拉:

<em style="display:none;"id="statusError">*NO MORE THAN 255 CHARACTERS</em> 
<form id="status_form" name="status_form"> 
<input type="text" id="status_updated2" size="57" /> 
</form> 

如果我輸入方式更是255個字符的錯誤信息不會拿出像它應該和fnctions在「其他」聲明中通過。我錯過了什麼?

+1

您是否記錄過'statusV'的值以確保您正確獲取值?我的第一個調試選項是一個簡單的'console.log(statusV,statusV.length)'。 – nrabinowitz 2012-02-23 01:09:14

+1

你是否返回false;在提交javascript動作結束時? – 2012-02-23 01:10:13

回答

1

您沒有看到該消息的原因是,如果出現錯誤,您不會阻止發生默認操作(表單提交)。你可以像這樣停止此:

$(document).ready(function(){ 
    $('form#status_form').submit(function(event){ 
     var statusV = $('input#status_updated2').val(); 
     if(statusV.length > 255) 
     { 
      event.preventDefault(); // stop the form submitting if there's an error. 
      $('em#statusError').fadeIn().fadeOut(5000); 
     } 
     else 
     { 
      //do cool stuff 
     } 
    }); 
}); 

見的jsfiddle here的工作示例。

+0

是的!這很有道理!我懂了!我可以在3分鐘內接受這個答案!謝謝一堆! – Silas 2012-02-23 01:18:00

+1

很高興我可以幫助:) – 2012-02-23 01:22:14

1

如何結合​​事件和return荷蘭國際集團false如果已經有太多的字符:

$('input[type="text"]').on('keydown', function (event) { 

    //check if the character limit has already been reached, but always allow backspace key strokes and delete key strokes 
    if (this.value.length >= 255 && event.which != 8 && event.which != 46) { 

     //this will stop the current key stroke from being added to the value of the input 
     return false; 
    } 
}); 

這裏是一個演示:http://jsfiddle.net/5yRK2/

event.which != 8 && event.which != 46 - >這使得退格鍵和刪除鍵做他們的事情(因爲他們刪除字符,而不是添加它們)。

+0

感謝您花時間看這個! – Silas 2012-02-23 01:16:30

1

您很可能需要捕獲默認表單提交事件。嘗試:

$('form#status_form').submit(function(evt){ 
    evt.preventDefault();  
    ... 
} 
1

邏輯很好。但是你可能會忘記調用e.preventDefault()來阻止#status_form提交,這會打破statusError消息。

$('form#status_form').submit(function(e){ 
    ... 
    $('em#statusError').fadeIn().fadeOut(5000); 
    e.preventDefault();