防止表单提交不起作用

时间:2014-02-22 21:40:35

标签: jquery ruby-on-rails

所以如果输入为空,我试图阻止表单提交。代码看起来像这样:

$(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帮助器来呈现表单。

1 个答案:

答案 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;
    }
}