मेरे पास 3 html <select> साल, महीना और दिन है। वर्ष और महीना दोनों स्वचालित रूप से चालू वर्ष और चालू माह पर सेट हो जाते हैं। मैंने इसे पूरी तरह से PHP में किया था। हालांकि, जिस दिन जावास्क्रिप्ट द्वारा ट्रिगर किया जा रहा है वह काम नहीं कर रहा है, भले ही मैंने पहले ही किया हो

if (j == <?php echo date('d') ?>)  days_select.options[days_select.options.length] = new Option(j, j, true);

डिफ़ॉल्ट दिन अभी भी 1 है न कि वर्तमान दिन। इससे भी निराशा की बात यह है कि जब मैंने इसे फायरबग पर चेक किया तो चयनित दिन वर्तमान दिन है ... मैं प्रोग्रामिंग में कुल नोब हूं इसलिए इस तरह की साधारण चीजें मेरे लिए समझना मुश्किल है। कृपया मदद करें...

date_select.php

<body onload="loadDays();">
 <script type="text/javascript" >

  function loadDays() {
   var year = parseInt(document.getElementById('years').value);
   var month = document.getElementById('months').value;
   var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
   var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

   if ((year % 4) == 0)  days[1] = 29;

   var days_select = document.getElementById('days');
   days_select.options.length = 0;

   for(i in months) {
    if (month == months[i]) {

     for(var j = 1; j <= days[i]; j++ ) {
      if (j == <?php echo date('d') ?>)  days_select.options[days_select.options.length] = new Option(j, j, true);
      else days_select.options[days_select.options.length] = new Option(j, j);
     }
     break;
    }
   }
  }

 </script>

 <span style="display: table; ">
  <span style="display: table-cell; ">
   <select id="years" onchange="loadDays();">
    <?php 
     for($year = 1900; $year <= 2100; $year++ ) {
      if ($year == date('Y')) echo "<option value='$year' selected=''>" . $year . "</option>";
      else echo "<option value='$year'>" . $year . "</option>";
     }
    ?>
   </select>
  </span>
  &nbsp;
  <span style="display: table-cell; ">
   <select id="months" onchange="loadDays();">
    <?php 
     $months = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );

     foreach($months as $month){
      if ($month == date('M')) echo "<option value='$month' selected=''> " . $month . "</option>";
      else echo "<option value='$month'> " . $month . "</option>";
     }
    ?>
   </select>
  </span>
  &nbsp;
  <span style="display: table-cell; ">
   <select id="days" >

   </select>
  </span>
 </span>
</body>
0
Newbie Coder 5 मई 2011, 06:29

2 जवाब

सबसे बढ़िया उत्तर

मैं इसे एक अलग उत्तर के रूप में डाल रहा हूं क्योंकि यह एक है।

Option() का तीसरा पैरामीटर यह है कि क्या विकल्प डिफ़ॉल्ट रूप से चुना गया है, जैसे कि इसे HTML में निर्दिष्ट किया गया था। चौथा यह है कि क्या यह वास्तव में अभी चुना गया है। अपने Option() कॉल में एक और true जोड़ें और यह मेरे लिए परीक्षण में काम करता है।

new Option(j, j, true, true)
1
Michael Berkowski 5 मई 2011, 06:57

मुझे लगता है कि ऐसा इसलिए हो सकता है क्योंकि <?php echo date('d') ?> एक अग्रणी शून्य के साथ "04" स्ट्रिंग उत्पन्न करता है। आपका j लूप काउंटर एक पूर्णांक है, और PHP द्वारा स्ट्रिंग आउटपुट से कभी भी मेल नहीं खाएगा।

इसे Javascript के parseInt() फ़ंक्शन में लपेटने का प्रयास करें, या बिना किसी अग्रणी शून्य के date('j') का उपयोग करें।

if (j == parseInt(<?php echo date('d') ?>))

बेहतर अभी तक, वर्तमान दिन प्राप्त करने के लिए जावास्क्रिप्ट की अपनी दिनांक वस्तुओं का उपयोग करें।

var theDateObj = new Date();
var today = theDateObj.getDate(); // Will output int 4 for today.
1
Michael Berkowski 5 मई 2011, 06:40
1
मैं इसे अभी देखता हूं - आपको अपने new Option() के लिए एक और पैरामीटर चाहिए। आपने defaultSelected पैरामीटर true सेट किया है, लेकिन आपको यह बताने के लिए निम्न पैरामीटर true की भी आवश्यकता है कि क्या यह वास्तव में अभी चुना गया है। new Option(j, j, true, true); इस संशोधन के साथ मेरे लिए परीक्षण किया और काम किया।
 – 
Michael Berkowski
5 मई 2011, 06:53
क्या आप अपने उत्तर को नए विकल्प (जे, जे, सत्य, सत्य) में संपादित कर सकते हैं ताकि मैं उत्तर स्वीकार कर सकूं।
 – 
Newbie Coder
5 मई 2011, 06:57