2012-06-05 74 views
2

这里是我的JsfiddlejQuery的的preventDefault()函数不工作

其实我试图验证文本字段提交之前。 如果文本字段为空,并且没有提交表单,我想显示errormsg_box。 但在这里它不工作 这里是我的脚本:

$("form").submit(function(event) { 

    var text_val = $('#emailid').val(); 
    alert(text_val); 
    if (text_val != ' ') { 
     $('.errormsg_box').show(); 
     return false; 
     event.preventdefault(); 
    } 
    else if (text_val != '') { 
     $('.errormsg_box').hide(); 
     return true; 
    } 
}); 
+4

首先,JavaScript是大小写敏感的语言。它应该是'event.preventDefault()'。接下来,'return false'与'preventDefault'重叠。 – VisioN

+0

有关验证,请使用jQuery验证插件。它对于验证表单域的灵活性和特定性要高得多 –

回答

2
if ($.trim(text_val) === "") { 
    return false; 
    // Or 
    event.preventDefault(); // event.preventdefault() 
          // javascript is case sensitive. 
} 

全码:

$("form").submit(function(event) { 
    var text_val = $('#emailid').val(); 

    if ($.trim(text_val) === "") { 
     $('.errormsg_box').show(); 
     return false; 
    } 
    else 
     $('.errormsg_box').hide(); 
});​ 

Live DEMO

如果你想validte文本是一个有效的电子邮件地址:

var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
if (!regex.test($.trim(text_val))) 
    ... Error 

Live DEMO

+0

+1你是唯一的(除了我':)')谁得到了有'return false'和'preventDefault'在一起。加修剪是一种很好的做法。 – VisioN

+0

但''=显示消息框和''=隐藏,因此修剪是将两者合并为始终隐藏的''。 –

+0

@JPHollmons。查看完整的代码和演示。 – gdoron

1
$("form").submit(function(event) {  
    var text_val = $.trim($('#emailid').val()); // $.trim() for remove space 
    if (!text_val) { // check for empty 
     $('.errormsg_box').show(); 
     return false; 
     //or 
     //event.preventDefault(); 
    } 
}); 

DEMO

+0

您可能想对您所做的更改发表评论。 –

+0

无论值是什么,都可以防止默认值。 – gdoron

+0

嗨你的脚本不工作。我在jsfiddle尝试这里是链接http://jsfiddle.net/hhyZk/3/ –

0

编辑这可能是一个更好的解决方案:

<input id="emailid" class="required email" /> 

和使用jQuery验证插件: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

$("#form").validate(); 

所以是这样的:

$(document).ready(function() { 
    $("#form").submit(function() { 
     var container = $('errormsg_box'); 

     var validator = $("#form").validate({ 
      errorContainer: container, 
      errorLabelContainer: $("ul", container), 
      ignore: ":not(:visible)", 
      wrapper: 'li', 
      rules: { 
       emailid: { required: true, email: true } 
      }, 
      messages: { 
       emailid: "The e-mailaddress is invalid!" 
      } 
     }); 
     if ($("#form").valid()) { 
      alert('ok nice!'); 
     }  
    }); 
});