У меня вопрос jQuery:
У меня есть кнопка «ДОБАВИТЬ», которая добавляет текст в базу данных с помощью вызова AJAX ($ .post () ...).Проблема в том, что предметы постоянно добавляются.Например:
После загрузки страницы: пользователь нажимает кнопку «ДОБАВИТЬ»:
- при первом добавлении элемента.
- при добавлении секундэлемент и затем добавляет его снова (всего 2 элемента)
- три раза, добавляет элемент, а затем добавляет его снова и снова (всего 3 элемента)
- и т. д ...
Это проблема, поскольку данные дублируются.
Я сузил проблему:
$(document).ready(function()
{
// set event handler for Add button
bindAddButtonEventListener();
});
// set event handler for Add button
function bindAddButtonEventListener()
{
// event handler for the add button
$("#addRecord").click(function()
{
openPopUpBox();
enablePopUpBoxControls();
// event handler for Submit button on admin Popup box. Submits data to database
$("#editPopUp #submitChanges").click(function(event)
{
addNewRecord();
});
});
}
// this method will submit a new record to the server, using AJAX post
function addNewRecord()
{
var obj = buildJSONobject();
$.post("admin/addRecordToDatabase", obj, function(data)
{
displayServerValidation(data);
cancelPopUpChanges();
getCatagoriesItems();
});
disablePopUpBoxControls();
}
// this unbinds the events for the popup box controls
function disablePopUpBoxControls()
{
// unbind event handler for button
$("#editPopUp #submitChanges").unbind("click", bindEditButtonEventListener);
//$("#editPopUp #submitChanges").unbind("click", bindAddButtonEventListener);
// unbind event handler for button
$("#editPopUp #cancelEdit").unbind("click", enablePopUpBoxControls);
}
По какой-то причине внутри bindAddButtonEventListener (),когда этот код выполняется:
$("#editPopUp #submitChanges").click(function(event)
{
addNewRecord();
});
addNewRecord () вызывается снова во второй и третий раз, в третий раз, а затем снова.Я не могу понять, как помешать этому.Я думал, что освобождение от обязательств поможет, но, похоже, это не так.Любая помощь будет высоко ценится.