我有一个包含2个按钮save & continue
和save and exit
的表单。我也给了这些按钮2个ID,分别是save_cont
和save_exit
。
第一个按钮工作正常但是当我点击第二个按钮时,第一个按钮的ajax也会激活,因此我无法重定向我的网址并重新加载页面。
在demo.discount.blade.php中:
//Save and Continue
$('#save_cont').click(function() {
$.ajax({
url: 'demo_save_data',
type: 'POST',
data: $("#add_seasonal_discount").serialize(),
success: function(result) {
if (result.success > 0) {
alert("Save and Continue");
window.location.reload();
}
}
});
});
//Save and Exit
$('#save_exit').click(function() {
$.ajax({
url: 'demo_save_data',
type: 'POST',
data: $("#add_seasonal_discount").serialize(),
success: function(result) {
if (result.success > 0) {
alert("Save and Exit");
window.location = 'demo_seasonal_discount_newpage_report.php';
}
}
});
});
$("#save_cont").unbind("click");
按钮的HTML:
<div class="form-group col-md-12 required">
<button title="Save" id="save_cont" class="scl_issave a-link btn scl-btn-clasic scl-btn-margin-v" type="button">Save & Continue</button>
<button title="Save" id="save_exit" class="scl_issave_exit a-link btn scl-btn-clasic scl-btn-margin-v" type="button">Save & Exit</button>
</div>
在我的控制器内:
public function demo_save_data() {
DB::table('demo_table') ->
insert([
'invoice_type' => Input::get('invoice_type'),
'sales_channel' => Input::get('pricing_group'),
'material' => Input::get('matnr'),
'from_date' => Input::get('fromdt'),
'to_date' => Input::get('todt'),
'discount' => Input::get('discount'),
'bukrs' => Session::get('company')
]);
return array('success' => 1);
}
编辑:最后添加$("#save_cont").unbind("click");
。现在第二个按钮save_exit
工作正常,但第一个按钮save_cont
根本不起作用。
答案 0 :(得分:0)
我无法一眼就看出为什么你描述的行为会发生。您可以将它们合并为一个函数并消除问题,因为您将相同的数据发送到同一个地方,例如:
function thingClicked(theThing){
$.ajax({
url:'demo_save_data',
type:'POST',
data:$("#add_seasonal_discount").serialize(),
success:function(result){
if(result.success>0){
if(theThing == 'save_cont'){
alert("Save and Continue");
window.location.reload();
}else if(theThing == 'save_exit'){
alert("Save and Exit");
window.location='demo_seasonal_discount_newpage_report.php';
}
}
});
}
然后当然你可以随意调用它。你使用的.click()
绑定应该没问题......
$("#save_cont").click(thingClicked(this.id));
和
$("#save_exit").click(thingClicked(this.id));
没有什么真正改变,但两者之间的唯一区别是返回,所以也可以将条件逻辑放在那里,并消除任何歧义。