Предотвратите ссылку, подтвердите, а затем перейдите в местоположение jquery
У меня есть ссылки вроде этого.
<a href="delete.php?id=1" class="delete">Delete</a>
Если пользователь нажмет на него. Подтверждение должно появиться, и только тогда, когда пользователь нажмет "да", он должен перейти к фактическому URL-адресу.
Я знаю, что это может предотвратить поведение по умолчанию
function show_confirm()
{
var r=confirm("Are you sure you want to delete?");
if (r==true) { **//what to do here?!!** }
}
$('.delete').click(function(event) {
event.preventDefault();
show_confirm()
});
Но как мне продолжить эту ссылку или отправить сообщение ajax на эту ссылку после подтверждения?
Ответы
Ответ 1
вы можете сделать все это внутри клика:
$('.delete').click(function(event) {
event.preventDefault();
var r=confirm("Are you sure you want to delete?");
if (r==true) {
window.location = $(this).attr('href');
}
});
Или вы могли бы сделать это, передав элемент clicked в функцию:
function show_confirm(obj){
var r=confirm("Are you sure you want to delete?");
if (r==true)
window.location = obj.attr('href');
}
$('.delete').click(function(event) {
event.preventDefault();
show_confirm($(this));
});
Ответ 2
Мне потребовалось некоторое время, чтобы понять это, поэтому я решил, что опубликую свое решение.
$('.delete').click(function(e){
if(confirm('Are you sure?')){
// The user pressed OK
// Do nothing, the link will continue to be opened normally
} else {
// The user pressed Cancel, so prevent the link from opening
e.preventDefault();
}
}
Я думал о том, чтобы подтвердить неверный путь. Подтверждение предотвратит автоматическое открытие сайта и дождитесь ввода пользователя. Итак, в основном, вам нужно переместить файл preventDefault в другое.
Таким образом, вы запрещаете открывать ссылку, если нажимаете "Отмена". Это также позволяет использовать ссылку, как обычно, например, если у нее есть команда target = "_ blank".
Ответ 3
function show_confirm(url){
var r=confirm("Are you sure you want to delete?");
if (r==true){
location.top.href = url;
}
}
$('.delete').click(function(event) {
event.preventDefault();
show_confirm($(this).attr('href'));
});
Если вы хотите использовать ajax, вы можете заменить location.top.href = url;
на $.get(url);
Ответ 4
function show_confirm(elem)
{
var r=confirm("Are you sure you want to delete?");
if (r==true) {
window.location.href = elem.href;
}
}
$('.delete').click(function(event) {
event.preventDefault();
show_confirm(this)
});
Ответ 5
Это короткая форма:
$('.delete').click(function(){return confirm("Are you sure you want to delete?")});
Я использую его на веб-сайтах для подтверждения загрузки/ссылки.
Ответ 6
Чтобы оптимизировать код в функции show_confirm, попробуйте использовать ниже:
function show_confirm(obj){
if(confirm("Are you sure you want to delete?")) window.location = obj.attr('href');
}
Ответ 7
вы могли бы сделать
function show_confirm()
{
if(confirm("Are you sure you want to delete?")){
//make ajax call
}else{
//no ajax call
}
}
Ответ 8
$('.delete').click(function() {
if (confirm('Are you sure?')) {
$.post($(this).attr('href'), function() {
// Delete is OK, update the table or whatever has to be done after a succesfull delete
....
}
}
return false;
}
Ответ 9
Если вам нравится использовать alert/confirm, это лучший способ (я предпочитаю использовать Подтверждение Bootstrap или bootbox):
$('.confirm-delete').click( function( event ) {
if ( !confirm('Are you sure?') ) event.preventDefault();
});