2015-12-09 83 views
1

所以我在類似的問題上看到了很多答案,但沒有找到如何正確地使它工作。 我在查詢中有很多函數,並且它們都沒有完成,因爲html事件加載了下一頁。所以我需要的是如何使html事件等到jquery檢查它應該檢查的所有內容。從html中調用jquery函數而不會阻止默認值

這樣例子的jQuery

jQuery.noConflict(); 
jQuery(document).ready(function($) { 
    $(document).on("click","input[name=open]", function() { 
     var login = $("input[name=field1]").val(); 
     var pas = $("input[name=field2]").val(); 
     alert('I call it'); 

     $.post("index.php", { 
      st: 1, 
      field1: field1, 
      field2: field2 
     }, function(data) { 
      alert(data); 
      if ($.trim(data) == 'er') { 
       alert("Sorry incorrect data"); 
       return false; 
      } 
      else 
       return true; 
     }); 
    }); 
}); 
<div> 
    <form method="POST" action="index.php?cd=in"> 
     <!----code here ---> 
     <div> 
      <input name="open" class="field_submit" type="submit" size="7" value="IN" "> 
     </div> 

因此,當有不符合action="index.php?cd=in"行功能工作正常。那麼發生什麼事就是啓動這個函數,但是沒有等待結果並做重定向。因此,有幾個方面,我怎麼能阻止它:

  1. 重定向的jQuery,但它不是我所需要
  2. 是使HTML文件上的標籤輸入事件onclick="return function-name();"

但問題如何正確實現jquery文件的功能,因爲當我把該功能放在控制檯中給我一個錯誤,因爲我的功能沒有定義。所以問題在於如何在jquery文件中正確實現它爲HTML文件中的onclick事件工作的功能。或者如果你知道其他更好的變體來實現它。由於

回答

2

你需要的是:

// bind submit event on form, not click of submit 
// because a form can be submited without clicking submit button 
$(document).on("submit", "form:has(input[name=open])", function(e) { 
    e.preventDefault(); // prevent default behaviour 
    var self = this; // keep ref on form 
    var login = $(this).find("input[name=field1]").val(); 
    var pass = $(this).find("input[name=field2]").val(); 
    alert('I call it'); 
    $.post("index.php", { 
    st: 1, 
    login: login, 
    pass: pass 
    }, function(data) { 
    alert(data); 
    if ($.trim(data) == 'er') { 
     alert("Sorry incorrect data"); 
     return false; // if error, return whatever value 
    } 
    self.submit(); // submit the FORM calling submit DOM API method (doesn't trigger jq submit handler) 
    }); 

}); 
+0

什麼關於HTML文件?一些onclick事件? –

+0

@alex_mike我不明白你的意思?!哪個'onclick'事件?編輯:我編輯回答,因爲'this.submit();'必須'self.submit();'。它可以是'this.submit(); ''只有當傳遞'context:this,'作爲ajax請求的選項時,不可能使用簡寫'$ .post()'方法 –

+0

糟糕,我忘記防止默認行爲,現在再次檢查:'function(e ){e.preventDefault(); ...});' –

相關問題