2017-09-12 25 views
0

後執行一個功能我有這個輸入:如何完成的第一個

<button type="button" title="test" class="button btn-cart" onclick="productAddToCartForm.submit(this); redirectToCart();">OK</button> 

我要在完成第一個productAddToCartForm.submit(this)後,但沒有移動第一上執行redirectToCart(),我指的是productAddToCartForm.submit(this)應留在onclick按鈕。

function redirectToCart() 
{ 
    window.location.replace("http://stackoverflow.com"); 
} 
+0

如果有的話,添加'form' HTML和'submit'函數。 – sabithpocker

+0

不,我沒有它只是一個花式框中的按鈕,誰調用了'productAddToCartForm.submit(this)'我需要的是在完成函數 – Prince

+0

什麼是'productAddToCartForm'後重定向到另一個頁面?它是一個HTMLForm嗎?你也可以添加'submit()'函數定義嗎?普通的HTML表單提交會導致整個頁面重新加載,具體取決於表單的目標。你將不得不[爲其他行爲使用AJAX](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript) – sabithpocker

回答

0

它更容易和更喜歡不使用內聯事件。

只需創建一個事件偵聽器並從那裏調用兩個函數。

var myButton; 
myButton.addEventListener('click', function (e) { 
    productAddToCartForm.submit(this); 
    redirectToCart(); 
}); 
+0

我把什麼在onclick按鈕? – Prince

+0

您的解決方案連續調用兩個函數,但我需要的是等到第一個完成,然後執行第二個函數 – Prince

+0

這不是異步的。這些函數一次被調用並運行一次。我不明白你在說什麼。 –

0

如果productAddToCartForm是你的JavaScript表單元素,你可以這樣做:

productAddToCartForm.onload = redirectToCart; 
1

我在這裏做了一些假設,但原則應該工作。

首先,我假設productAddToCardForm.submit(this)觸發AJAX請求,無論是本機還是使用jQuery。無論哪種情況,您都需要使用承諾來處理此問題。

有一個全面的指導here,但基本如下:

  1. 回報承諾從你的第一個功能
  2. 運行你的第二個功能,當第一個功能成功解決了

那可能看起來像這樣:

function myFirstFunction(packet) { 
    return new Promise(function(resolve, reject) { 
    resolve(productAddToCartForm.submit(packet)) 
    }); 

function doBothThings(packet) { 
    myFirstFunction().then(redirectToCart()) 
}; 

我已經放在一起快速fiddle,證明這更好。

注意:這是Promise最簡單的用例,但它們是一個非常強大的工具。完整規格是here

+0

doBothThings沒有定義 – Prince

+0

該代碼中有一些錯誤,對不起。試圖現在解決它 – jymbob

相關問題