我有一个id = submit的提交按钮,用于保存新记录。
// Add new customer
$("#submit").click(function() {
var data = $.param($("#form").serializeArray());
event.preventDefault();
$.ajax({
type: "POST",
url: "crudcustomers.php",
data: data,
success: function(msg) {
$("#message").attr('class', 'alert alert-success');
$("#message").html(msg);
// Rebind datagrid after record added.
getRecords();
}
});
});
现在,当我更新现有记录时,我简单地将现有记录填充到表单字段中,并且在运行时我将id = submit更改为id = update。见下文。
success: function(response) {
/*console.log(response);*/
// Taking ajax response into javascript objects to fill the form fields
object = $.parseJSON(response);
$("#customername").attr('value', object[0].name);
$("#customercnic").attr('value', object[0].cnic);
$("#customeraddress").attr('value', object[0].address);
$("#customeremail").attr('value', object[0].email);
$("#customerphone").attr('value', object[0].phone);
$("#submit").attr('id','update'); // i change the attr here
}
现在我正在尝试运行一个函数
// Update customers
$("#update").click(function(){
alert("working");
});
但是,不是运行警报功能,#update.click也在运行我的保存记录功能..我试过将它放在文件外面但已经不能正常工作
请帮帮我谢谢。
答案 0 :(得分:3)
您应该使用委托,例如:
$(document).on('click','#update',function(){...});
提交时也一样:
$(document).on('click','#submit',function(){...});
文档应替换为最近的静态容器
据说,切换元素ID永远不是一个好主意AFAIK
答案 1 :(得分:1)
答案 2 :(得分:1)
在这种情况下,您已更改了元素ID,但未更改附加到DOM对象的事件。
例如,您有一个DOM对象表单,其中id = submit,事件单击(function1(){})。
当你更改元素的id时,你有一个DOM对象Form,id = update和event click(function1(){}和function2(){})。
编辑: 你应该使用:$("#submit")。unbind("点击"); OR $("#update")。解绑("点击");