Javascript JQuery验证字符最小值

Javascript JQuery验证字符最小值,javascript,jquery,validation,Javascript,Jquery,Validation,我不知道我做错了什么,但基本上这就是我所拥有的 JQuery: $(document).ready(function(){ $('form#status_form').submit(function(){ var statusV = $('input#status_updated2').val(); if(statusV.length > 255) { $('em#statusError').fadeIn().fa

我不知道我做错了什么,但基本上这就是我所拥有的

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个字符

如果我输入的字符数超过255个,错误消息将不会出现,并且“else”语句中的fnctions将通过。我错过了什么

绑定到
键下
事件和
返回
ing
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;
    }
});
下面是一个演示:


event.which!=8&&event.which!=46
-->这允许退格键和删除键执行它们的操作(因为它们删除字符而不是添加字符)。

绑定到
keydown
事件并
return
ing
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;
    }
});
下面是一个演示:


event.which!=8&&event.which!=46
-->这允许退格键和删除键执行它们的操作(因为它们删除字符而不是添加字符)。

您没有看到消息的原因是,如果出现错误,您没有阻止默认操作(表单提交)的发生。你可以这样阻止它:

$(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
         }
     }); 
});

请参阅JSFIDLE以了解工作示例。

您没有看到消息的原因是,如果出现错误,您没有阻止默认操作(表单提交)的发生。你可以这样阻止它:

$(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
         }
     }); 
});

请参阅JSFIDLE以了解工作示例。

您很可能需要捕获默认表单提交事件。尝试:

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

您很可能需要捕获默认表单提交事件。尝试:

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

逻辑是正确的。但是您可能忘记调用e.preventDefault()来阻止提交#status_表单,这会破坏statusError消息

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

逻辑是正确的。但是您可能忘记调用e.preventDefault()来阻止提交#status_表单,这会破坏statusError消息

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

您是否记录了
statusV
的值以确保正确获取该值?这里我的第一个调试选项是一个简单的
console.log(statusV,statusV.length)
;在提交javascript操作结束时,您是否记录了
statusV
的值以确保正确获取该值?这里我的第一个调试选项是一个简单的
console.log(statusV,statusV.length)
;在提交javascript操作结束时?感谢您花时间查看此操作!谢谢你花时间看这个!对这是有道理的!我懂了!我能在三分钟内得到这个答案!非常感谢!对这是有道理的!我懂了!我能在三分钟内得到这个答案!非常感谢!