2012-02-23 55 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();