当我点击buy now
按钮通过pincode
发送请求时,我有buynow
和ajax
两种表单,pincode
形式也同样如此
HTML
<form method="POST" action="/cart/add" id="myForm">
.....
....
<input type="button" class="buyNowBtn" id="btnBuyNow"/>
</form>
<form action="#">
<input type="text" id="pinCheck" class="pinCheck" placeholder="enter pin code" />
<button class="btn btn-info" id="pinCheckTest"> Check</button>
</form>
在同一buynow
点击事件中,我需要trigger
一个pincode
提交按钮,所以我这样做了
(document).on('click', '#btnBuyNow', function (e) {
....
....
$("#pinCheckTest").trigger('click');
....
});
上述trigger
事件成功调用pincode
点击事件
$('#pinCheckTest').click(function () {
$.ajax({
type: 'GET',
url: url,
success: function (output) {
if (output == 'true') {
}
else{
}
}
});
但是我需要将ajax
响应回trigger
事件,以便我可以做一些操作吗?
类似
(document).on('click', '#btnBuyNow', function (e) {
....
....
$var output=$("#pinCheckTest").trigger('click');//I need to get ajax response back to this click
if(output=='true'){
......
}else{
.....
}
....
});
答案 0 :(得分:1)
您可以在click
处理程序之外定义变量,调用.trigger()
时,将$.ajax()
分配给变量,在第一个.then()
处理程序中使用click
处理$.ajax()
电话的结果。
注意,包含event.preventDefault()
以阻止提交<form>
,正如@IsmailRBOUH所指出
var dfd;
$(document).on('click', '#btnBuyNow', function (e) {
e.preventDefault();
....
....
$("#pinCheckTest").trigger('click');
if (dfd) {
dfd.then(function(output) {
// do stuff with output
console.log(output)
})
}
....
});
$('#pinCheckTest').click(function (e) {
e.preventDefault();
dfd = $.ajax({
type: 'GET',
url: url,
success: function (output) {
if (output == 'true') {}
else{};
}
})
});
var dfd;
$("#first").click(function() {
$("#second").trigger("click");
if (dfd) {
dfd.then(function(data) {
alert(data)
})
}
})
$("#second").click(function() {
// do ajax stuff
dfd = $.when("second clicked")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="first">first button</button>
<button id="second">second button</button>
答案 1 :(得分:1)
由于您将点击事件绑定到button
内的form
,因此您可以阻止默认行为“提交表单”。将代码更改为:
$('#pinCheckTest').click(function (e) {
e.preventDefault();
//Your ajax call
});
以下是澄清区别https://jsfiddle.net/qvjjo3jk/的演示。
<强> UPDATE1:强>
在表单中添加id
:
<form action="#" id="pinCheckForm">
<input type="text" id="pinCheck" class="pinCheck" placeholder="enter pin code" />
<button class="btn btn-info" id="pinCheckTest"> Check</button>
</form>
然后:
$('#pinCheckForm').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: url,
data: $(this).serialize(), //Sends all form data
success: function(output) {
if (output == 'true') {} else {}
}
});
});