2014-02-11 3 views
0

(Я сделал сообщение об этом раньше, но я постараюсь быть немного более ясным в этом.)Окно подтверждения OK/Отмена странного поведения в диалоговом окне?

У меня возникли проблемы с окном windows.confirm. Мой клик-событие открывает диалоговое окно jquery и загружает список объектов. У каждого объекта есть кнопка удаления, которая удаляет и отправляет обновленный список (через представление Django).

Im пытается поставить OK/Отменить подтверждение перед удалением. Он работает один раз. Проблема в том, что в следующий раз, когда я открою диалог, нажмите «Удалить», я должен нажать ОК/Отменить два раза, затем три раза и т. Д.

Любые идеи? (Я пытался также еще вернуться ложным)

$("#mylist").click(function(event) { 
    event.preventDefault(); 
    $('#dialog').load($(this).attr('href')).dialog({ 
     width: 800, 
     height: 530, 
     resizable: false, 
     title: "Dialog Title", 
     autoOpen: true, 
     modal: true 
    }); 

$("#dialog").on("click", ".delete", function(event) { 
    event.preventDefault(); 
    var val = window.confirm('Are you sure you want to delete this?'); 
    if(val == true) { 
    $("#dialog").load($(this).attr("href")); 
    } 
}); 
}); 
+1

Вы уверены, что вы не крепление 'click' события более одного раза? – Teemu

ответ

3

Попробуйте закрыть первую функцию, прежде чем определить второе:

$("#mylist").click(function(event) { 
    event.preventDefault(); 
    $('#dialog').load($(this).attr('href')).dialog({ 
     width: 800, 
     height: 530, 
     resizable: false, 
     title: "Dialog Title", 
     autoOpen: true, 
     modal: true 
    }); 
}); 

$("#dialog").on("click", ".delete", function(event) { 
    event.preventDefault(); 
    var val = window.confirm('Are you sure you want to delete this?'); 
    if(val == true) { 
    $("#dialog").load($(this).attr("href")); 
    } 
}); 
+0

Хороший улов. Без закрытия первого вы повторно привязываете дополнительное время после каждого щелчка. –

+0

Да, я думаю, это работает! Черт, я действительно не согласен с этим ... Спасибо, много! – user3199840

0

Попробуйте вместо этого:

$("#mylist").click(function(event) { 

    event.preventDefault(); 
    $('#dialog').dialog('destroy').remove(); 
    $('#dialog').load($(this).attr('href')).dialog({ 
     width: 800, 
     height: 530, 
     resizable: false, 
     title: "Dialog Title", 
     autoOpen: true, 
     modal: true 
    }); 

Если он ломает все попробуйте без удаления

1

Возможно, проблема в том, что событие click, содержащее подтверждение, находится внутри #mtli st click event.

Попробуйте это:

$("#mylist").click(function(event) { 
event.preventDefault(); 
    $('#dialog').load($(this).attr('href')).dialog({ 
    width: 800, 
    height: 530, 
    resizable: false, 
    title: "Dialog Title", 
    autoOpen: true, 
    modal: true 
    }); 
}); 

$("#dialog").on("click", ".delete", function(event) { 
event.preventDefault(); 
var val = window.confirm('Are you sure you want to delete this?'); 
if(val == true) { 
    $("#dialog").load($(this).attr("href")); 
} 
}); 
+0

Да, я думаю, что это было. Спасибо! – user3199840

Смежные вопросы