2014-09-25 7 views
1

Я пытаюсь создать кнопку, которая при нажатии удаляет запись базы данных, когда я нажимаю ее, я хочу, чтобы сообщение говорило «вы уверены, что хотите удалить это», а затем, если я нажму «отменить», сообщение исчезнет, ​​и ничего не произойдет , если я нахожусь в порядке, удаленные прогоны - , но также он перезагружает страницу, я думаю, для этого потребуется jquery (это то, что я бы хотел, чтобы она была), если оператор, который в основном говорит, что если ok щелкнут, по умолчанию, а также обновить страницу после запуска кода.Могу ли я/как использовать OnClick с оператором if?

до сих пор у меня есть

<button name="del" type="submit" value="1" onclick="return confirm('Are you sure you want to delete this?') "> delete</button> 

Пожалуйста, скажите мне, если я буду неправильно с этим, и если я не так, пожалуйста, помогите мне с тем, как писать, если, (у меня есть Infact искали это и информация недостаточно для меня, чтобы понять, я разработчик PHP, никогда раньше не использовал Javascript, но хотел бы начать)

EDIT: если это проблема кэширования, как ее решить ?

+0

UM, это кнопка отправки, чтобы страница была отправлена ​​.... Зачем вам нужно обновлять страницу? – epascarello

+0

PS Java! == JavaScript – epascarello

+0

Он отправляет, я хочу, чтобы он обновлялся, потому что я так хочу, чтобы он работал. В основном это показывает пользователей, и если вы нажмете на удаление, оно удалит их, страница должна обновиться так что вы можете видеть, что пользователя больше нет. – seanyt123

ответ

0

Я полагаю, что ваша проблема связана скорее с проблемой кэширования и перезагрузкой страницы после того, как представление формы неэффективно, так как вы выполняете ненужный обратный путь к серверу, однако если это то, что вы хотите, это один из способов сделать это:

PS: Удалите атрибут отправки onclick.

document.addEventListener('DOMContentLoaded', function() { 
    initDeletionPage(document.getElementById('the-id-of-the-form-to-target')); 
}); 

function initDeletionPage(deletionForm) { 
    refreshPageIfNeeded(); 
    deletionForm.addEventListener('submit', onSubmit); 

    function refreshPageIfNeeded() { 
     if (sessionStorage.getItem('pageRefreshNeeded')) { 
      sessionStorage.removeItem('pageRefreshNeeded'); 
      location.reload(); 
     } 
    } 

    function onSubmit(e) { 
     if (!confirmDeletion()) e.preventDefault(); 
     else indicatePageRefreshNeededAfterSubmission(); 
    } 

    function confirmDeletion() { 
     return confirm('Are you sure you want to delete this?'); 
    } 

    function indicatePageRefreshNeededAfterSubmission() { 
     sessionStorage.setItem('pageRefreshNeeded', true); 
    } 
} 

Извините, но я попросил более Jquery пути

Ok ...

$(function() { 
    initDeletionPage('#the-id-of-the-form-to-target'); 
}); 

function initDeletionPage(deletionForm) { 
    refreshPageIfNeeded(); 
    $(deletionForm).submit(onSubmit); 

    function refreshPageIfNeeded() { 
     if (sessionStorage.getItem('pageRefreshNeeded')) { 
      sessionStorage.removeItem('pageRefreshNeeded'); 
      location.reload(); 
     } 
    } 

    function onSubmit(e) { 
     if (!confirmDeletion()) e.preventDefault(); 
     else indicatePageRefreshNeededAfterSubmission(); 
    } 

    function confirmDeletion() { 
     return confirm('Are you sure you want to delete this?'); 
    } 

    function indicatePageRefreshNeededAfterSubmission() { 
     sessionStorage.setItem('pageRefreshNeeded', true); 
    } 
} 
+0

Извините, но я попросил больше JQuery:/также это позволило бы подтвердить подтверждение (вы уверены, что хотите, чтобы бла-бла) на одной кнопке? Потому что у меня есть другой для редактирования, и я не хочу, чтобы он запрашивал подтверждение. – seanyt123

+0

@ seanyt123 У вас есть более одной кнопки отправки в вашей форме? – plalx

+0

Нет, это не в другой форме, задает ли эта цель конкретную форму? и есть ли способ сделать это в JQuery? – seanyt123

1

Подтверждение у вас есть хорошо. Тем не менее, вы в основном выполняете 2 запроса, когда нажимаете «Ok».

Я хотел бы сделать это один из 2 способов:

1. Postback на ту же страницу, и использовать PHP для обработки данных $ _POST перед генерацией данных для страницы. Псевдо код:

if($_POST['userid']!= null) 
    deleteUser($_POST['userid']); 
getUsers(); 

2. Использование Javascript Стреляет запрос Ajax на другую страницу, которая делает удаление вашего пользователя. Затем в событии «Полное» запустите JS, чтобы перезагрузить страницу, на которой вы сейчас находитесь.

Я думаю, что вариант 2 был бы лучшим. Это даст вам еще больше возможностей для JavaScript.

$.ajax({ 
    url: "deleteuser.php?userid=1", 
}).done(function() { 
    location.reload(); 
}); 

Или equivilant за $ .post Вам даже не нужно, чтобы перезагрузить страницу. Вы можете использовать Javascript для удаления строки, содержащей пользователя, который вы только что удалили. Это, конечно, использует jQuery, но jQuery - это просто оболочка для Javascript