2013-11-25 120 views
0

我有一些問題得到一些JavaScript代碼運行時提交表單。Javascript表單提交運行

這裏是我的代碼

<form onsubmit="return header_search()" class="navbar-form navbar-right"> 
     <div class="form-group"> 
     <input type="text" placeholder="Tack" class="form-control"> 
     </div> 
     <button type="submit" class="btn btn-success">Search</button> 
    </form> 

    <script> 
     function header_search() { 
      e.preventDefault(); 
      alert("submitted"); 
     } 
    </script> 

http://jsfiddle.net/Fgwzn/

回答

1

你從來沒有定義e,所以e.preventDefault();拋出一個異常和腳本停止。

您可以刪除e.preventDefault();或移動到現代事件綁定的風格:

停止使用固有的事件屬性,與JS綁定你的事件處理程序,並確保您接受事件對象的參數。

function header_search(e) { 
    e.preventDefault(); 
    alert("submitted"); 
} 
document.querySelector('form').addEventListener('submit', header_search); 

閱讀該文檔(MDN是看的好地方),對瀏覽器的支持和替代querySelectoraddEventListener就留給讀者自己練習。

2

As @Quentin said,它的行爲並不如預期,因爲您沒有在任何地方定義e

當你標記jQuery,我會建議一個替代使用它。將ID添加到表單中,然後在JavaScript中定義您的onsubmit行爲。

HTML

<form id="your-form" class="navbar-form navbar-right"> 
    ... 
</form> 

的JavaScript

$('#your-form').submit(function(e) { 
    alert('submitted'); 
    e.preventDefault(); 
}); 

我想這將是簡單的解決方案,你就不必處理瀏覽器兼容性問題(哎IE,我看着你)與event變量和addEventListener/attachEvent。 jQuery爲你照顧。

小提琴:http://jsfiddle.net/MGA74/

0

如果您嘗試取消submittion只是用戶return false;在你的代碼,或在的onsubmit

使用return false;像下面

<script> 
     function header_search() { 
      alert("submitted"); 
      return false; 
     } 
    </script> 

<form onsubmit="header_search(); return false;"... 

編輯:e.preventDefault();不需要。在表單標籤中也不需要返回。

+0

'e.preventDefault()'和'return false'都會阻止默認事件(即提交表單並加載操作頁面)。在操作系統中,它不是每個人都需要的,但我認爲他可能需要它。 – Halcyon