0

送信されたフォームのアクションリンクを取得しようとしていますが、送信アラートをクリックすると未定義です

$(document).on("submit","form",function(e){
     e.preventDefault();
     if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
     {
        setTimeout(function(){
        alert($(this).attr("action"));
        //      $.post($(this).attr('action') , $(this).serialize() , function(data){
        //  $(".wholepage").html(data); 
        //  });
        },400);
     }
 });

HTML

<div class="well login">
    <form id="reg" action="parts/background/regProcess.php" method="post">
         <input placeholder="Choose an username" type="text" name="user"><br/><br/>
         <input placeholder="Choose a password" type="password" name="pass1"><br/><br/>
         <input placeholder="Input the password again" type="password" name="pass2"><br/><br/>
         <input placeholder="Enter your E-mail address" type="text" name="email"><br/>
         <input type="submit" class="last-button load" value="SUBMIT">   
    </form>
</div>
4

2 に答える 2

1

$(this)タイムアウト機能の前に保存する必要があります。

$(document).on("submit","form",function(e){
  e.preventDefault();
  var $this = $(this);
  if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
  {
    setTimeout(function(){
      var relPath = $this.attr("action");
      var absPath = $this.prop("action");
      alert(relPath);
      //      $.post($(this).attr('action') , $(this).serialize() , function(data){
      //  $(".wholepage").html(data); 
      //  });
    },400);
  }
});

ここにフィドルがあります:http://jsfiddle.net/vMbHS/

于 2013-08-03T02:30:31.817 に答える
1

別の解決策は、 bindthisを使用してバインドすることです。

$(document).on("submit","form",function(e){
     e.preventDefault();
     if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
     {
        setTimeout((function(){
        alert($(this).attr("action"));
        //      $.post($(this).attr('action') , $(this).serialize() , function(data){
        //  $(".wholepage").html(data); 
        //  });
        }).bind(this),400);
     }
 });

これにより、関数が親関数の変数に緩やかにタイトになるため、より保守しやすいコードが作成されます。

于 2013-08-03T02:47:43.827 に答える