【问题标题】:Preventing form submit doesn't work阻止表单提交不起作用
【发布时间】:2014-02-23 06:04:35
【问题描述】:

因此,如果输入为空,我会尝试阻止表单提交。代码如下所示:

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

【问题讨论】:

  • 对我来说,sn-ps 代码都有效。

标签: jquery ruby-on-rails


【解决方案1】:

尝试使用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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多