Javascript 为什么即使有';什么是错误?

Javascript 为什么即使有';什么是错误?,javascript,form-submit,Javascript,Form Submit,起初我有这个,它工作得很好,但即使有错误,它也会提交: $(document).ready(function(){ $('input[name=subdomain]').keyup(subdomain_check); $('input[name=password]').keyup(password_strenght); $('input[name=c_password]').keyup(password_check); $('input[name

起初我有这个,它工作得很好,但即使有错误,它也会提交:

 $(document).ready(function(){
      $('input[name=subdomain]').keyup(subdomain_check);
      $('input[name=password]').keyup(password_strenght);
      $('input[name=c_password]').keyup(password_check);
      $('input[name=email]').keyup(email_check);
  });
所以我把它改成这个,现在它不调用里面的函数了

$(document).submit(function(e){
    $('input[name=subdomain]').keyup(subdomain_check);
    $('input[name=password]').keyup(password_strenght);
    $('input[name=c_password]').keyup(password_check);
    $('input[name=email]').keyup(email_check);
    return false;
});
这里怎么了?

以下是全部代码:

不知道验证函数返回的确切内容,但是,如果是布尔值,您可以执行如下操作:

$("#formId").submit(function(e){
    if(!subdomain_check() || !password_strenght() || !password_check() || !email_check()) {
        e.preventDefault();
    }
});

在提交事件发生之前,您不会附加keyup事件处理程序。此时,用户已完成所有字段的键入

将对
$(…).keyup(…)
的调用移回dom就绪事件。实际上,您需要一个额外的事件处理程序来检查用户输入:

$(document)
    .ready(function(){
        $('input[name=subdomain]').keyup(subdomain_check);
        $('input[name=password]').keyup(password_strenght);
        $('input[name=c_password]').keyup(password_check);
        $('input[name=email]').keyup(email_check);
    })
    .submit(function(e) {
        // validate input
        // if invalid, show error message and call e.preventDefault();
    });
一般用户工作流程是:

  • 调用jQuery中的
    domready
    事件时,请附加keyup事件处理程序
  • 用户在表单字段中键入,触发keyup处理程序
  • 用户提交表单,触发提交处理程序
  • 提交处理程序验证表单输入,如果无效,则向用户显示错误消息并阻止提交事件继续

  • 删除
    返回false我认为这个问题需要进一步澄清。这里没有足够的信息。定义哪些不起作用、可能出现的任何错误、这些函数的定义位置以及如何定义。那么也许有人能帮你。还返回假;将导致提交函数无法执行。此代码看起来很奇怪。你可以在提交时添加
    keyup
    listeners…?你可以共享子域检查、密码检查、密码检查、电子邮件检查功能定义吗?我认为这个答案指向了正确的方向。但是,您可能需要更正一些问题:它可能应该是
    $('#formId')。submit(…)
    ,并且您应该调用if语句中的函数,即
    子域检查()
    ,等等。
     $(document).ready(function(){
          $('input[name=subdomain]').keyup(subdomain_check);
          $('input[name=password]').keyup(password_strenght);
          $('input[name=c_password]').keyup(password_check);
          $('input[name=email]').keyup(email_check);
    
          function subdomain_check (e) {
             // these functions should set a global variable to false if validation fails
          }
    
          function password_strenght (e) {
             // these functions should set a global variable to false if validation fails
          }
    
          function password_check (e) {
             // these functions should set a global variable to false if validation fails
          }
    
          function email_check (e) {
             // these functions should set a global variable to false if validation fails
          }
    
          $(document).submit(function(e){
              return global_var; // where global_var is the variable set by the validating functions
          }
    
      });