не работает функц. календаря если в имение есть []
Добрый день ув. гуру JS. Подскажите пожалуйста как исправить данный баг.
Скачал скрипт календарика, оч симпатичный. Работает он по принципу такому: <input type="text" name="thedate" size="17" value="" /> <input type="button" name="button" value="..." onclick="displayCalendar(thedate,'yyyy-mm-dd',this)" /> Проблема в том что у меня не одно поле для календаря а несколько и т.к. я работаю с php мне хотелось бы передавать данные имени сразу в []. Пример: <input type="text" name="thedate['. $row-> id .']" size="17" value="" /> <input type="button" name="button" value="..." onclick="displayCalendar(thedate['. $row-> id .'],'yyyy-mm-dd',this)" /> Но вот когда передаю квадратные скобки "[]" то не хочет работать :( А если например передаю thedate_['. $row-> id .']. Подскажите пожалуйста как реализовать это с квадратными скобками! Спасибо за внимание! Функция displayCalendar: function displayCalendar(inputField,format,buttonObj,displayTime,timeInput) { if(displayTime)calendarDisplayTime=true; else calendarDisplayTime = false; if(inputField.value.length>6){ //dates must have at least 6 digits... if(!inputField.value.match(/^[0-9]*?$/gi)){ var items = inputField.value.split(/[^0-9]/gi); var positionArray = new Object(); positionArray.m = format.indexOf('mm'); if(positionArray.m==-1)positionArray.m = format.indexOf('m'); positionArray.d = format.indexOf('dd'); if(positionArray.d==-1)positionArray.d = format.indexOf('d'); positionArray.y = format.indexOf('yyyy'); positionArray.h = format.indexOf('hh'); positionArray.i = format.indexOf('ii'); this.initialHour = '00'; this.initialMinute = '00'; var elements = ['y','m','d','h','i']; var properties = ['currentYear','currentMonth','inputDay','currentHour','currentMinute']; var propertyLength = [4,2,2,2,2]; for(var i=0;i<elements.length;i++) { if(positionArray[elements[i]]>=0) { window[properties[i]] = inputField.value.substr(positionArray[elements[i]],propertyLength[i])/1; } } currentMonth--; }else{ var monthPos = format.indexOf('mm'); currentMonth = inputField.value.substr(monthPos,2)/1 -1; var yearPos = format.indexOf('yyyy'); currentYear = inputField.value.substr(yearPos,4); var dayPos = format.indexOf('dd'); tmpDay = inputField.value.substr(dayPos,2); var hourPos = format.indexOf('hh'); if(hourPos>=0){ tmpHour = inputField.value.substr(hourPos,2); currentHour = tmpHour; if(currentHour.length==1) currentHour = '0' }else{ currentHour = '00'; } var minutePos = format.indexOf('ii'); if(minutePos>=0){ tmpMinute = inputField.value.substr(minutePos,2); currentMinute = tmpMinute; }else{ currentMinute = '00'; } } }else{ var d = new Date(); currentMonth = d.getMonth(); currentYear = d.getFullYear(); currentHour = '08'; currentMinute = '00'; inputDay = d.getDate()/1; } inputYear = currentYear; inputMonth = currentMonth; if(!calendarDiv){ initCalendar(); }else{ if(calendarDiv.style.display=='block'){ closeCalendar(); return false; } writeCalendarContent(); } returnFormat = format; returnDateTo = inputField; positionCalendar(buttonObj); calendarDiv.style.visibility = 'visible'; calendarDiv.style.display = 'block'; if(iframeObj){ iframeObj.style.display = ''; iframeObj.style.height = '140px'; iframeObj.style.width = '195px'; iframeObj2.style.display = ''; iframeObj2.style.height = '140px'; iframeObj2.style.width = '195px'; } setTimeProperties(); updateYearDiv(); updateMonthDiv(); updateMinuteDiv(); updateHourDiv(); } |
thedate в первом варианте - это на самом деле свойство объекта window, а к свойствам объектов можно обращаться как window.prop, так и window['prop'] (когда название свойства определяется динамически, заранее неизвестно)
p.s. а вообще, имхо, лучше назначить тэгу атрибут id и использовать getElementById |
Спасибо что обратил внимание на мой вопрос, но если не тяжело можеш поправить код? а то у меня с JS траблы :wacko: Буду весьма благодарен!
|
Часовой пояс GMT +3, время: 02:04. |