2010-11-23 17 views
0

それぞれに割り当てられたクラスの日付ピッカーがあります。私が達成しようとしているのは、日付ピッカーonSelect()ハンドラーを検出して(使用して)、選択した日付に1日を加えた最小日付を設定することです。次のdatepickerを取得し、最小の日付値を設定します

$(this).next( '。publication_date);を使用しようとしました。しかし、これは何も返されないようです。

実際には、選択した日付の後に一連の日付ピッカーが表示される可能性があるため、これらを個別に設定する必要があります。

マークアップ: -

$(".publication_date").livequery(function() { 
$(this).datepicker({ 
    dateFormat: "dd M yy", 
    changeYear: true, 
    changeMonth: true, 
    altFormat: 'yy-mm-dd', 
    altField: $(this).next(), 
    onSelect: function(dateText, inst) { 
    console.log($(this).next('.publication_date')); 
    } 
}); 
}); 

例HTML: -

<div id="tierRight"> 
    <div id="tier1" class="tier"> 
     <p class="title">Tier 1</p> 
      <label class="publication_date_label" for="publication_date_1">Publication Date: </label> 
      <input type="text" value="" readonly="readonly" name="tier[1][publication_date]" id="publication_date_1" size="10" maxlength="10" class="publication_date hasDatepicker"> 
      <input type="hidden" class="publication_date_db" value="2010-11-24" name="tier[1][publication_date_db]" id="publication_date_db_1"> 
      <img class="date_clear" src="delete_grey.gif" onclick="$(this).siblings('input').val('');"> 
     </div> 
    <div id="tier2" class="tier"> 
     <p class="title">Tier 2 <a class="removeTier" title="" href="#">Remove</a></p> 
     <label class="publication_date_label" for="tier[2][publication_date]">Publication Date: </label> 
     <input type="text" value="" readonly="readonly" name="tier[2][publication_date]" id="publication_date_2" size="10" maxlength="10" class="publication_date hasDatepicker">&nbsp; 
     <input type="hidden" class="publication_date_db" name="tier[2][publication_date_db]" id="publication_date_db_2" value=""> 
     <img src="delete_grey.gif");="").val(="" input="" onclick="$(this).siblings(" class="date_clear"> 
    </div> 
    <div id="tier3" class="tier"> 
     <p class="title">Tier 3 <a class="removeTier" title="" href="#">Remove</a></p> 
     <label class="publication_date_label" for="tier[3][publication_date]">Publication Date: </label> 
     <input type="text" value="" readonly="readonly" name="tier[3][publication_date]" id="publication_date_3" size="10" maxlength="10" class="publication_date hasDatepicker">&nbsp; 
     <input type="hidden" class="publication_date_db" name="tier[3][publication_date_db]" id="publication_date_db_3" value=""> 
     <img src="/delete_grey.gif");="").val(="" input="" onclick="$(this).siblings(" class="date_clear"> 
    </div> 
</div> 

以下のコードを使用しようとしているが、スタイルは、いくつかの理由で、すべての奇妙に行く:この中

$('#start_date_datepicker').datepicker({ 
       dateFormat: "dd M yy", 
       altField: '#start_date_datepicker_altfield', 
       altFormat: 'yy-mm-dd', 
       changeYear: true, 
       changeMonth: true, 
       minDate: new Date(), 
       onSelect: function(dateText, inst) { 
        $('.publication_date').each(function(){ 
         var current_tier = $(this).closest('.tier'); 
         //Do all your stuff here 
         console.log(current_tier); 
         $(current_tier).datepicker({ 
          minDate: new Date() 
         }); 
        }); 
       } 
      }); 
+0

これを相対的に取得する方法を説明するには、マークアップを参照する必要があります。 –

+0

ニック、いくつかのサンプルコードを追加しました。 –

答えて

0

あなたが.closest()を使用して.tierの親に行く必要がある場合、.next()兄弟、内部その後、.find().publication_date制御、次のように:

$(".publication_date").livequery(function() { 
$(this).datepicker({ 
    dateFormat: "dd M yy", 
    changeYear: true, 
    changeMonth: true, 
    altFormat: 'yy-mm-dd', 
    altField: $(this).next(), 
    onSelect: function(dateText, inst) { 
    console.log($(this).closest(".tier").next().find('.publication_date')); 
    } 
}); 
}); 

そこには多くの誤りがある、しかし、あなたのHTMLをチェックし、ランダムJavaScriptの断片はあなたに問題を与えるだろう。

+0

ああ、それはFirebugからコピーしたからです。 –

+0

@ user275074 - それは答えを変えない、無効なHTMLはそれに加えてただのコメントだった:) –

0
$('.publication_date').each(function(){ 

     var current_tier = $(this).closest('.tier'); 

     //Do all your stuff here 

}); 
+0

私はこれが何をすべきか分からない...しかし、有効なJavaScript、 '.hasClass()'ブール値を返します。 –

+0

@ニック:はい、それを修正しました.. –

+0

これは私にすべてのdatePickersを取得することがわかりますが、個別にどのように設定するのですか? –

関連する問題