CakePHP Javascript диалог подтверждения Форма отправки не работает не работает - PullRequest
4 голосов
/ 28 марта 2011

С помощью формы регистрации моего CakePHP, после нажатия кнопки «Отправить», я просто хочу отобразить диалоговое окно «Подтверждение Javascript», которое должно работать следующим образом:

  • При нажатии «ОК» следует отправить форму
  • Если нажать кнопку Отмена, не следует переходить к действию отправки

Но здесь, когда я нажимаю Отмена, хотя оно отправляется.Не знаете почему?

Код формы CakePHP:

<?php echo $form->create('Noncompetitor', array('type' => 'file', 'url' => '/register', 'onSubmit' => 'confirmfrmSubmit();'));?> 

Мой код JS:

function confirmfrmSubmit(){

    var agree=confirm("Are you sure you wish to continue?");

    if (agree)
        return true ;
    else
        return false ;
}

Пожалуйста, дайте мне знать, если вы, ребята, имеете какое-то представление оэто.

Спасибо!

Ответы [ 6 ]

9 голосов
/ 13 июля 2011

Можно также использовать более простой метод, попробуйте это:

$this->Form->create('Request',array('onsubmit'=>'return confirm("are you sure?");'))
5 голосов
/ 28 марта 2011

Обновление: Кредит велосипед для исправления моего сломанного обратного вызова. Смотрите ниже для деталей. (И большое спасибо StackO за то, что автор ответа не получил окончательного решения о принятии правки.)


Вот решение с использованием jQuery:

<?php
    $this->Html->scriptBlock("
        jQuery(function($){
            $('form.noncompetitor').submit(function(event){
                if (!confirm('Are you sure?')) { return false; }
            });
        });
    ",array('inline'=>false)); // inline => false will put this snippet in the DOM's head.

    echo $this->Form->create('Noncompetitor',array(
        'type'=>'file','url'=>'/register',
        'default'=>false,'class'=>'noncompetitor'
    ));

    /* The rest of your form */
2 голосов
/ 22 марта 2012

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

Попробуйте добавить возвращаемую часть в поле onSubmit, например:Ваш JS-код должен работать как есть, проблема только в том, что значение подтверждения никогда не передается в форму при вызове обработчика onSubmit.

PS обратите внимание, что в коде JS можно сделать следующее:

return confirm("Text");

Надеюсь, это поможет.

1 голос
/ 01 августа 2012

В начале вы были на 99% пути ... вам просто нужно было добавить 'return' перед вызовом функции проверки.

<?php echo $form->create('Noncompetitor', array(
       'type' => 'file', 
       'url' => '/register', 
       'onSubmit' => 'return confirmfrmSubmit();'));
?>

Сделаем это.

1 голос
/ 31 марта 2011

Я нашел очень простое решение для этого запроса:

<?php echo $form->create('ModelName', array('type' => 'file', 'url' => 'url', 'name' => 'frmRegister', 'onsubmit' => 'validatefrm(); return false;')); ?>

С помощью функции onsubmit я просто определил 'validatefrm (); вернуть false; '

function validatefrm(){ // my condition, when i needs it to submitted document.frmRegister.submit(); return true; }

и нашел, что он работает Smooch:)

Дайте мне знать, если это поможет вам.

0 голосов
/ 08 мая 2018

Существует следующий шаг: -

- включить этот файл jquery-

echo $this->Html->css('/css/jquery-confirm.min.css', ['block' => 'css']);

Создать кнопку отправки

<?= $this->Form->button('<i class="fa fa-check"></i><span class="hidden-xs"> ' . __('Save') . '</span>', ['type' => 'submit', 'escape' => false, 'id' => 'submit_form_id', 'class' => 'btn green', 'title' => 'Save']); ?>



$('body').on('click', '#submit_form_id', function (e) {
            e.preventDefault();
                  var submitFormVar=1;
            if (submitFormVar!= 0) {
                $.confirm({
                    title: '',
                    content: 'Do you want to stop submit form' ,
                    buttons: {
                        ok: function () {
                            $(form).submit();
                        },
                        cancel: function (o) {
                            return o;
                        }
                    }
                });
            } else {
                $(form).submit();
            }
        });

Код запроса

  • если вы хотите отправить форму, тогда значение равно 0
  • если вы не хотите отправлять форму, то значение равно 1
  • реализовать как логика вашего требования
...