0

URL を介して自動的に生成される HTML と javascipt があります。この html と javascipt は、Smarty テンプレートを使用して生成されます。残念ながら、生成されたこのコードは多数の jQuery を使用していますが、jQuery ライブラリへの参照がコードに含まれていないため、エラーが発生します。これを変更することはできません。以下は、エラー「Uncaught Reference Error: cj is not defined」を生成する JavaScript の最初の部分の例です。

<script type="text/javascript"> cj( function() { var element_date = "#birth_date_display";var element_time = "#birth_date_time";var time_format = cj( element_time ).attr('timeFormat'); cj(element_time).timeEntry({ show24Hours : time_format, spinnerImage: '' }); var currentYear = new Date().getFullYear();var alt_field = '#birth_date';cj( alt_field ).hide();var date_format = cj( alt_field ).attr('format');var altDateFormat = 'mm/dd/yy'; switch ( date_format ) { case 'dd-mm': case 'mm/dd': altDateFormat = 'mm/dd'; break; }

私ができることは、ファイルの最後にコードを追加することです。そのため、関連するライブラリをロードして、同じ JavaScript コードをもう一度入力するだけで問題なく動作します。

私が直面している問題は、事後でも jQuery を使用してページのスタイリングを行おうとしていることです。以下の行は私に問題を与えています。すべてが正常にラップされますが、私の JavaScript ファイルはこの行で終了します。

 $("#editrow-email-Primary, #editrow-phone-1-1, #editrow-birth_date").wrapAll("<div class='grid-group personal' />");

再び同じエラー「Uncaught reference error: cj is not defined.」が表示されます。jQuery UI の datepicker を使用するため、以前の JavaScript のほとんどは editrow-birth_date div です。面白いことに、ファイルの末尾に同じ JavaScript と jQuery を追加するだけで、.wrapAll を追加するまで問題なく動作します。その後、元のjavascriptで何かを再度実行しようとして、新しいエラーを生成して終了しているようです。

私はここで完全に立ち往生しており、何が起こっていると思うかを適切に説明する方法さえ知りません. 元の JavaScript をオンザフライでコードから削除して、もう実行できないようにする方法はありますか? そうは思いませんが、それで問題が解決すると思うので、そう願っています。

4

1 に答える 1