0

iframe によって呼び出される必要がある関数が親ページにあり、この関数は iframe のフォーム値を更新します。関数を正常に呼び出すことができますが、フォーム値の更新が機能していません

親関数が入力値を認識できるかどうかを確認するアラートを設定しましたが、未定義が返されたため、ID に正しくアクセスしていないと想定しています。

これは、3 つのテキスト ボックスに分割されたフィールドで今日の日付を自動初期化しようとする私のコードです。

主なjs関数

 window.autoPartialDateBox = function(htmlID) {
if ( !jQuery('#'+htmlID+"_mm").val() && !jQuery('#'+htmlID+"_dd").val() && !jQuery('#'+htmlID+"_yy").val() ) {
            var myDate = new Date();    
            jQuery('#'+htmlID+"_mm").val(myDate.getMonth()+1 );                      
            jQuery('#'+htmlID+"_dd").val(myDate.getDate() ); 
            jQuery('#'+htmlID+"_yy").val(myDate.getFullYear() );               
} }

iframe

    <script type="text/javascript"> 
   $(function () {
        // this will populate the partial date box          
           $("#someElement").live("change", function() {
               if ($(this).val() == 'trigger') {
                window.top.autoPartialDateBox('partial_date_box');
               }

           });

        });
    </script>

Action <select name="someElement" id="someElement" class="valid">
    <option value="" selected="">Select an option</option> 
    <option value="trigger">Trigger</option>            
</select>

Day <input name="stop_dd_2747_mm" type="text" id="stop_dd_2747_mm">
Month <input name="stop_dd_2747_dd" type="text" id="stop_dd_2747_dd" >
Year <input name="stop_dd_2747_yy" type="text" id="stop_dd_2747_yy" >
4

1 に答える 1

0

ID へのアクセスに問題があると思われる場合は、jQuery セレクター内で ID を「構築」しようとしている可能性があります。より良い解決策は、関数に親要素を渡し、ノードツリーを横断して入力フィールドを見つけることだと思います。

関数:

 window.autoPartialDateBox = function(parentElm) {  

     $nodes = jQuery(parentElm).children('input[type=text]');

     if (!$nodes[0].val() && !$nodes[1].val() && !$nodes[2].val()) {


        var myDate = new Date();    
        $nodes[0].val(myDate.getMonth()+1 );                      
        $nodes[1].val(myDate.getDate() ); 
        $nodes[2].val(myDate.getFullYear() );               
  } 
 }

入力フィールドのコンテナーを追加します。

<div id="input_container">
   Day <input name="stop_dd_2747_mm" type="text" id="stop_dd_2747_mm">
   Month <input name="stop_dd_2747_dd" type="text" id="stop_dd_2747_dd" >
   Year <input name="stop_dd_2747_yy" type="text" id="stop_dd_2747_yy" >
</div>

私はそれをテストしていませんが、それが私が行う一般的な方法です。セレクター内で文字列を作成しようとすると、jQuery がどのように動作するかわかりません。それは問題ではないようですが、決してわかりません。

編集jQuery名前空間で宣言された「ノード」

于 2012-07-18T16:13:50.123 に答える