Javascript AJAX/Jquery-删除form.onSubmit

Javascript AJAX/Jquery-删除form.onSubmit,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,因此,我希望在用户输入4个字符时运行ajax,而不是在用户单击/按下提交按钮时运行ajax,因此我必须删除这一行: form.on('submit', function(e){ 但是如果是那样的话,我会得到一个错误。我的代码: $('#passwordField').keyup(function () { if (this.value.length == 4) { $(function(){

因此,我希望在用户输入4个字符时运行ajax,而不是在用户单击/按下提交按钮时运行ajax,因此我必须删除这一行:

form.on('submit', function(e){
但是如果是那样的话,我会得到一个错误。我的代码:

       $('#passwordField').keyup(function () {
            if (this.value.length == 4) {


                $(function(){
                    var form = $('#login-form');

                        if(form.is('.loading, .loggedIn')){
                            return false;
                        }

                        var user = form.find('#usernameField').val(),
                            messageHolder = form.find('#usernameErrorContainer');
                        var pass = form.find('#passwordField').val(),
                            messageHolder = form.find('#passErrorContainer');

                        e.preventDefault();

                        $.post(this.action, {user: user}, function(m){

                            if(m.error){
                                form.addClass('error');
                                messageHolder.text(m.message);
                            }
                            else{
                                form.removeClass('error').addClass('loggedIn');
                                messageHolder.text(m.message);
                            }
                        });
                        $.post(this.action, {pass: pass}, function(p){

                            if(m.error){
                                form.addClass('error');
                                messageHolder.text(p.message);
                            }
                            else{
                                form.removeClass('error').addClass('loggedIn');
                                messageHolder.text(p.message);
                            }
                        });

                    $(document).ajaxStart(function(){
                        form.addClass('loading');
                    });

                    $(document).ajaxComplete(function(){
                        form.removeClass('loading');
                    });
                });


            }
        });
      }
  });
      })
对于这个应用程序,我不需要任何安全度量,所以请不要让我阅读有关安全性的文章

编辑:实际表格:

  <form id="login-form" name="login-form" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
    <input type="text" id="usernameField" name="username" maxlength="4" placeholder="username">
    <input type="password" id="passwordField" maxlength="4" name="password" placeholder="password">
    <span id="usernameErrorContainer"></span>
      <span id="passErrorContainer"></span>

  </form>

问题是当您更改表单时。提交到keyup时,您也忘记更改其他元素。例如 您的匿名函数中仍然有e.preventDefault,这将抛出一个错误,因为e不在函数中, 若要修复它,请将e.preventDefault放在匿名函数之外,或者删除它,因为它不做任何事情。而且 所有表单变量都假设您使用的是纯JS创建的变量,但实际上您是使用jquery创建的,如下所示:var form=$'login-form';你
需要将其更改为:var form=document.getElementByIdlogin-form

你得到了什么错误?@CodeGodie,我得到一个错误,说我必须先声明e函数。action正在寻找表单的action属性,但这不是实际的表单。未捕获引用错误:e没有定义,你得到了另一个错误,因为你没有实际的表单,所以让我更新帖子,因为e.preventDefault;位于$function{}内,请将其放置在$function{}外