4

CakePHP の登録フォームで、[送信] ボタンをクリックすると、次のように動作する Javascript 確認ダイアログ ボックスを表示したいだけです。

  • [OK] を押すと、フォームを送信する必要があります
  • キャンセルが押された場合、送信アクションに進むべきではありません

しかし、ここでキャンセルを押すと、送信されます。なぜかわからない?

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 ;
}

あなたの仲間がそれについて何か考えを持っているなら、私に知らせてください。

ありがとう !

4

6 に答える 6

10

より簡単な方法も使用できます。これを試してください。

$this->Form->create('Request',array('onsubmit'=>'return confirm("are you sure?");'))
于 2011-07-13T06:57:19.360 に答える
5

更新:壊れたコールバックを修正してくれた自転車の功績。詳細については、以下を参照してください。(そして、回答の作成者が編集を受け入れることについて最終的な発言権を持てないようにするための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 */
于 2011-03-28T15:07:37.747 に答える
2

confirmfrmSubmit() から実際に値を返すことがないため、関数が失敗していると思います。

次のように、戻り部分を onSubmit フィールドに追加してみてください。

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

JS コードはそのまま動作するはずです。問題は、onSubmit ハンドラーが呼び出されたときに確認値がフォームに渡されないことです。

PSは、JSコードで次のことができることに注意してください。

return confirm("Text");

お役に立てれば。

于 2012-03-22T11:11:30.430 に答える
1

実際には、最初は 99% の方法でした..検証関数を呼び出す前に「return」を追加する必要がありました。

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

やります。

于 2012-08-01T16:11:39.373 に答える
1

このクエリに対する非常に簡単な解決策を見つけました。

<?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; }

そして、それがスムーズに機能していることがわかりました:)

それがあなたを助けるなら、私に知らせてください。

于 2011-03-31T08:36:33.697 に答える