Я делаю простую ссылку на удаление с событием onClick, которое вызывает диалог подтверждения. Я хочу подтвердить, что пользователь хочет удалить запись. Однако, похоже, что когда в диалоге нажимается Cancel, действие по умолчанию (т.е. ссылка href) все еще происходит, поэтому запись все еще удаляется. Не уверен, что я делаю неправильно... Буду признателен за любую помощь.
EDIT: На самом деле, как код сейчас, страница даже не делает вызов функции... так что, диалог не появляется вообще. Код onClick у меня был такой:
onClick="confirm('Delete entry?')"
который вызывал диалог, но все равно переходил по ссылке на Cancel.
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<script type="text/javascript">
function delete() {
return confirm('Delete entry?')
}
</script>
...
<tr>
<c:if test="${userIDRO}">
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}"/>" />
<img src="images/edit.GIF" ALT="Edit this skill." border="1"/></a>
</td>
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}&remove=1"/>" onClick="return delete()"/>
<img src="images/remove.GIF" ALT="Remove this skill." border="1"/></a>
</td>
</c:if>
</tr>
Там'ы опечатка в коде (тег а закрыт слишком рано). Вы можете использовать:
<a href="whatever" onclick="return confirm('are you sure?')"><img ...></a>
внимание возврат (подтверждение): значение, возвращаемое скрипты в собственном выравнивает решает, является ли действие по умолчанию браузер будет работать или нет; в случае, если вам нужно выполнить большой кусок кода, который вы, конечно, можете вызвать другую функцию:
<script type="text/javascript">
function confirm_delete() {
return confirm('are you sure?');
}
</script>
...
<a href="whatever" onclick="return confirm_delete()"><img ...></a>
(обратите внимание, что удалить это ключевое слово)
Для полноты картины: современные браузеры поддерживают DOM-события, что позволяет регистрировать более одного обработчика на одно событие по каждому объекту, доступ к подробности мероприятия, прекращения распространения и многое другое; см. дом события.
Ну, раньше у меня была такая же проблема и проблема была решена путем добавления слова " повозврат" и прежде чем подтвердить:
onclick="return confirm('Delete entry?')"
Я думаю, это могло быть услужлив для вас..
Удачи!
Я использую это, работает как шарм. Не нужно иметь никаких функций, просто вставьте вашу ссылку(и).
onclick="javascript:return confirm('Are you sure you want to delete this comment?')"
У меня вопрос так (нажать на кнопку, но после отмены нажал она по-прежнему удаляет мой объект), так сделал это так, надеюсь, что это помогает кому-то в будущем:
$('.deleteObject').click(function () {
var url = this.href;
var confirmText = "Are you sure you want to delete this object?";
if(confirm(confirmText)) {
$.ajax({
type:"POST",
url:url,
success:function () {
// Here goes something...
},
});
}
return false;
});
Использование простой ссылки для такого действия, как удаление записи, кажется мне опасным: что если краулер пытается проиндексировать ваши страницы? Он будет игнорировать любой javascript и следовать по каждой ссылке, что, вероятно, не очень хорошо.
Вам лучше использовать форму с method="POST".
И тогда у вас будет событие "OnSubmit", чтобы сделать именно то, что вы хотите...
Во-первых, delete является зарезервированным словом в javascript, я удивлен, что это даже выполняется для вас (когда я проверяю это в Firefox, я получаю синтаксическую ошибку).
Во-вторых, ваш HTML выглядит странно - есть ли причина, по которой вы закрываете открывающие теги якорей с />
, а не просто >
?
<img src="images/delete.png" onclick="return confirm_delete('Are you sure?')">
<script type="text/javascript">
function confirm_delete(question) {
if(confirm(question)){
alert("Action to delete");
}else{
return false;
}
}
</script>
Если вы хотите использовать небольшие встроенные команды в теге onclick, вы могли бы пойти с чем-то подобным.
в <кнопка id=" и" класс=на"Удалить и" функция onclick="и на JavaScript:если(убедитесь, ('вы действительно хотите удалить эту запись?')){jQuery(в этом).родитель().удалить(); возвращение ложным;}&;" Тип="и кнопка" и> Удалить </кнопку>
попробуйте это:
OnClientClick='возвращение (подтвердить (на"Вы уверены, что хотите удалить этот комментарий?&и"));'
Я'вэ была проблема с IE7 и вернув значение false перед.
Проверить мой ответ здесь в другом проблема: JavaScript не работает в IE