Попробуйте объединить окно подтверждения javascript с методом php post? - PullRequest
1 голос
/ 16 августа 2011

Вот код Javascript, только для теста:

<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {                   
            }
            else
            {                    
            }
        } 
</script>

А это код php:

<form action="Test.php" method="post">
    <input type="text" name="test"/>
    <input type="submit" value="submit" onclick="show_confirm()"/>
</form>

Так что, если нажата кнопка отправки, появится окно подтверждениявыскочить.И если нажать кнопку «ОК», страница будет перенаправлена ​​в Test.php и будет выполнен метод post, как обычная операция отправки страницы php.Или же, если нажата кнопка «Отмена», я хочу, чтобы она оставалась на той же странице, и метод публикации не будет выполнен.Можно ли эту функцию реализовать и как изменить код?Я знаю, что PHP для сервера, а JS для клиента.Я не уверен, смогу ли я их так смешать.Или я должен использовать Ajax?Спасибо за помощь!

Ответы [ 4 ]

3 голосов
/ 16 августа 2011

Лучший способ сделать это следующим образом:

<script>
    function show_confirm(){
        return confirm("Are you sure?");
    }
</script>
<input type="submit" onclick="return show_confirm();">

Причина, по которой я использую show_confirm вместо встроенной функции напрямую, заключается в том, что, если вы хотите изменить функциональность всплывающего окна подтверждения, гораздо сложнее, если вы используете встроенную функцию везде в своем коде.

Абстрагирование такого рода функциональности и написание простого и понятного кода сделают вас лучшим программистом:)


предупреждение : как указано в моих комментариях ниже, это будет работать, только если пользователь явно нажмет кнопку отправки. Если пользователь отправляет форму каким-либо другим способом, поле подтверждения не будет отображаться. См. http://www.w3schools.com/jsref/event_form_onsubmit.asp, если хотите показать подтверждение независимо от того, как была отправлена ​​форма.

3 голосов
/ 16 августа 2011

Вы можете сделать это прямо с кнопки. return false отменит отправку ... так что ...

<input type="submit" onclick="javascript:return confirm('Are you sure?');">

если пользователь нажмет «ОК», диалоговое окно вернет true, в противном случае - false.

, чтобы завершить здесь, это в форме функции.

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r == true)
  {
     // do something
     return true;
  } else {
     // do something
     return false;
  }
}

edit: читая это почти 4 года спустя, я вынужден изменить его.

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r)
  {
     // do something for true
  } else {
     // do something for false
  }
  return r;
}

позвони с <input type="submit" onclick="javascript:return show_confirm();">

Я полагаю, что это также будет обрабатывать случай, когда ничего не выбрано, но диалог закрыт.

примечание: следует избегать встроенных слушателей событий. прикрепите слушатель событий с помощью Javascript.

0 голосов
/ 16 августа 2011

Упрощение ответа rlemon еще больше (нет необходимости в javascript:return, также исправлены внутренние двойные кавычки):

<input type="submit" onclick="return confirm('Are you sure?')" />
0 голосов
/ 16 августа 2011
<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {     
                 document.location.href= 'page.php';              
            }
            else
            {                    
                 return false;
            }
        } 
</script>
...