2014-10-12 87 views
0

我在外部JS文件中有兩個函數,每個函數在不同頁面上提交相應表單時執行。這些函數是在一個初始化函數內調用的,該函數本身在window.onload上加載。只有第一個函數(以先放置者爲準)起作用(因此在下面的例子中,order.html頁面函數的totalOrder(),register.html頁面的validateForm()不)。我希望兩個人都爲他們各自的網頁工作。僅執行第一個函數 - 兩種形式的.onsubmit調用的兩個函數

打擾不精確的語言,我很新的JavaScript。我懷疑我缺少一些基本的東西。

function totalOrder() { 
alert("total order"); 
} 

function validateForm() { 
    alert("validation"); 
} 

function init() { 
    var orderForm = document.getElementById("order_Form"); 
    var regForm = document.getElementById("reg_Form"); 

    regForm.onsubmit = validateForm; 
    orderForm.onsubmit = totalOrder; 
} 

window.onload = init; 

形式在register.html:

<form id="order_Form" method="post" action="#" name="order">... <input type="submit" id="btnSubmit" value="Submit"></form> 

工作正常,如果功能從HTML頁面調用,但這並不理想:在order.html

<form id="reg_Form" method="post" action="#" name="registration">... <input type="submit" id="btnSubmit" value="Submit"></form> 

表,例如:

​​

Usin g addEventListener而不是onsubmit會遇到同樣的問題,例如

function init() { 
var orderForm = document.getElementById("order_Form"); 
var regForm = document.getElementById("reg_Form"); 

orderForm.addEventListener("submit", totalOrder); 
regForm.addEventListener("submit", validateForm); 

}

回答

0

它看起來像你有兩個頁面,每個僅有的一種形式,但你嘗試在JavaScript修改兩種形式。你可以使用這樣的事情:

function init() { 
    var orderForm = document.getElementById("order_Form"); 
    var regForm = document.getElementById("reg_Form"); 

    if (regForm != null) regForm.onsubmit = validateForm; 
    if (orderForm != null) orderForm.onsubmit = totalOrder; 
} 

這樣,你只嘗試修改實際上目前正使用JS代碼的網頁上不存在的形式。

相關問題