0

Yiiでこれを行う方法を考えています。

送信時に検証できるようにしたいフォームがあります。フォームに検証エラーがある場合は、通常のフォームの概要が表示されますが、フォームが検証された場合は、コントローラーからデータを受け取り、それをページに挿入して、フォームをリセットします。

私はこれまでこのコードを思いついた。

$('#node-window form').submit(function(){
    var $form = $(this);
    $.ajax({
        type : 'POST',
        url : $form.attr('action'),
        data : $form.serialize(),
        dataType : 'json',
        success : function(data) {
            if(data.status=='error') {
                // Renders the validation summary
                $('#node-window').html(data.form);
            } else {
                // No errors, so inject the data.

            }
        }
    });
    return false;
});

これは実際には機能しますが、フォームにエラーがある場合はエラーの概要が表示され、2回目に「送信」を押すと、「送信」イベントは当然インターセプトされません。

Yiiでこれをより簡単/よりスマートにする方法が必要ですか?

4

1 に答える 1

1

Yiiでこれを行うにはおそらくもっと良い方法がありますが、実際にはこれをかなり迅速に解決できます。最新バージョンのjQueryを使用している限り、トップラインを次のように変更します。

$('#node-window').on('submit', 'form', function(){

これにより、イベントがにバインドされ、#node-windowそこでフォームの送信がリッスンされます。その後、フォームが置き換えられるとき、それは重要ではありません。

于 2012-11-05T11:05:39.693 に答える