$( "#element")。loadイベントをトリガーするボタンがあります。このボタンと#elementは「ページA」内にあります
Yiiアクティブフォームがその要素内にロードされます(これを「ページB」と呼びましょう)。このアクティブフォームは、ajaxvalidation=trueになるように構成されています。yiiactiveform.jsファイルはメインレイアウト(ページA)にあり、そこにjquery.yiiactiveform.js参照を配置する必要があるため、activeformを呼び出すときにjquery.yiiactiveform.jsファイルがロードされないため、これは明らかに失敗します。
1つの解決策は、次の方法でアクティブフォームJSを「ページa」にプリロードすることです。
Yii::app()->clientScript->registerCoreScript('yiiactiveform');
また、「ページa」内のフォームアクションをバインドする対応するJSコードもあります。
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
$('#register-form').yiiactiveform({'validateOnSubmit':true,....,'enableAjaxValidation':true}]});
});
/*]]>*/
</script>
もう1つは、これらのJS呼び出しをページB内に配置することですが、これは、ヘッドタグをページB内に配置することを意味します。現在、私のページBには、フォーム要素のみが含まれ、html、bodyタグは含まれていません。これは、フォームタグのみが含まれているためです。とにかくそれが必要です、このページはページAの中にそれをload()することによってのみアクセス可能です。
ただし、このアプローチはあまり優れていません。これは、ロードされたフォームで適切なJS呼び出しを手動でバインドするようなものであり、フレームワークの目的を無効にします。Yii activeform JSがjqueryのon()またはlive()メソッドをサポートしていればうまくいくと思います。
他に何か提案はありますか?