2014-02-22 229 views
0

所以我试图防止表单提交如果输入是空的。代码看起来像这样:防止表单提交不起作用

$(document).on("submit", "form#input_form", function(e){ 
    if(!$(this).find("input[type=text]").val()){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
}); 

这不起作用。即使它执行preventDefault和stopPropagation,该请求也会通过。

但是,如果我这样做它成功地阻止提交:

$("form#input_form").on("submit", function(e){ 
    if(!$(this).find("input[type=text]").val()){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
}); 

我不明白有什么区别,它基本上是一回事,只是前者重视处理程序在文件级别,而后者会对形式本身产生影响。顺便说一句,我使用form_for助手来渲染表单。

+0

对于我来说这两个代码片段都有效。 –

回答

0

尝试使用Regular Expressions来验证用户的输入。示例如下所示:

var userInputVal = $(this).find("input[type=text]").val(); 

// validate the user input. no error if user entered data with one or more characters. 
function validateUserInput() { 
    var n = /(\.){1,}/; // creates a regular expression object pattern. 
    if (n.test(userInputVal)) { 
     userInputError.hide(); // hide the error message if the user input is one or more characters 
     return true; 
    } else { 
     userInputError.show(); // show the error message if the user input is one or more characters 
     return false; 
    } 
}