2013-04-02 4 views
1

. В нашем веб-приложении, когда мы загружаем документ, в конце есть изображение для удаления, после нажатия которого удаляется загруженный документ , Проблема заключается в том, что пользователи часто нажимают на значок непреднамеренно, и они даже не знают, что они что-то удалили.Вставьте подтверждение() в событие клика jQuery, в котором у меня нет контроля над

код для события OnClick является

<input type="image" name="xxxxxgbcremove" id="xxxxxgbcremove" class="RemoveImage" src="..." alt="Delete" onclick="$find('xxxfieldIDxxx').removeValue(xxxx); ;" style="border-width:0px;Display:Block;"> 

Я хочу, чтобы вставить функцию подтверждения(), когда изображение щелкнули, пользователи могут выбрать да или нет, чтобы продолжить или отменить удаление. проблема в том, что у меня нет контроля над приведенным выше кодом. Но у меня есть возможность добавлять новые скрипты.

Я попытался развязать клик, но не работал.

$(document).ready(function() { 
$("[id$='remove']").unbind('click'); 
}); 

Как мне «вставить» подтверждение() в событие onclick, которое появилось в приложении? В идеале исходное событие onclick должно быть временно остановлено до того, как пользователь примет решение в поле confirm(), если пользователь нажмет «да», а затем выполните процедуру удаления оригинала.

Спасибо!

+1

Именно поэтому вы не должны контролировать выход HTML ? – BenM

+0

Ben - Приложение - это приложение-поставщик, у нас нет возможности изменить что-либо в приложении, мы являемся конечными пользователями, но у нас есть возможность добавлять скрипты на страницу. – user651839

ответ

1

Встроенные обработчики событий не может быть отключена JQuery-х unbind(), вам нужно изменить обработчик инлайн и добавить любой код, который нужно:

$(document).ready(function() { 
    var myOnclick = $("[id$='remove']").attr('onclick'); 
    $("[id$='remove']").attr('onclick', 'if (confirm("Continue")) ' + myOnclick); 
}); 

Имейте в виду, что ваш селектор может соответствовать более одного элемента , и тогда вам нужно будет итератировать.

EDIT:

Или, если есть более чем один элемент:

$(document).ready(function() { 
    $("[id$='remove']").each(function(i, ele) { 
    $(ele).attr('onclick', 'if (confirm("Continue")) ' + $(ele).attr('onclick'); 
    }); 
}); 
+0

спасибо adeneo, отлично смотрится, я попробовал, но почему-то это не сработало, когда я нажимаю изображение в первый раз, ничего не происходит, если я его снова нажму, он удалит документ. любая идея почему? – user651839

+0

Это сработало для меня, возможно, у вас есть более одного элемента для '$ (" [id $ = 'remove'] ")'. Проверьте консоль '$ (" [id $ = 'remove'] "). Length' сколько штук дает вам. – kpull1

+0

@ user651839 - это просто пример того, как изменить встроенный обработчик кликов, который в значительной степени является вашим единственным вариантом, и я получил его в [** FIDDLE **] (http://jsfiddle.net/BzBGc /), но как вы могли бы структурировать это, чтобы все было правильно на вашей собственной странице, чтобы заставить его работать, на что трудно ответить? Есть ли несколько элементов с идентификатором, который заканчивается 'remove', если так вам понадобится цикл и т. Д. – adeneo

0

это работает ?:

onclick="if (confirm('my message')) $find('xxxfieldIDxxx').removeValue(xxxx);" 
+0

xxx динамичен, меняется каждый раз, когда документ загружается, поэтому я не могу его жестко закодировать. но спасибо. – user651839