2017-09-12 24 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

相关问题