cfif isdate (URL.day) проблема - всегда вызывать cfelse? - PullRequest
0 голосов
/ 28 августа 2011

У нас есть код ниже (частичный код), который используется как часть системы планирования, где мы можем добавлять и редактировать информацию для различных классов.Когда мы запускаем функцию «копировать с предыдущей даты», мы получаем обратно «Дата недействительна», что, как вы заметите, является частью условия cfelse в нижней части кода (исходный cfif, я полагаю, являетсяпервый ниже).Однако это происходит не во всех браузерах;это работает в некоторых версиях Windows Firefox.

<cfif isdate(URL.day)>
    do a bunch of stuff...  

...

    <cfoutput>  
    <p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1" onchange="parent.F7cms.content.iframe('scheduleManagerDay#URL.day#-tab1','components/custom/scheduleManager.cfm?day=#URL.day#&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><cfloop query="pastDays"><option value="#day_id#">#dateFormat(day_date,"DDDD, MMMM D, YYYY")#</option></cfloop></select></p>
    </cfoutput>

...

<cfelse>
    <cfoutput><h2>The date is invalid.</h2></cfoutput>
</cfif>

По сути, cfelse, "дата недействительна ", отображается при использовании функции ниже.Эта функция используется для копирования информации с одной даты на другую, и мы считаем, что эта дата действительно является действительной.Я думаю, что оскорбительный cfif есть.Я поместил большую часть кода в то, что, по моему мнению, имеет отношение к решению этой проблемы.Буду признателен за любые советы.

Кроме того, код, который инициирует процесс, который приводит к тому, что «дата недействительна», выглядит следующим образом:

<cfoutput>  
<p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1"       onchange="parent.F7cms.content.iframe('scheduleManagerDay#URL.day#-tab1','components/custom/scheduleManager.cfm?day=#URL.day#&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><cfloop query="pastDays"><option value="#day_id#">#dateFormat(day_date,"DDDD, MMMM D, YYYY")#</option></cfloop></select></p>
</cfoutput>

Вот HTML-код, созданный из этого кодапри нажатии приводит к ошибке:

<p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1" onchange="parent.F7cms.content.iframe('scheduleManagerDay2011-09-5-tab1','components/custom/scheduleManager.cfm?day=2011-09-5&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><option value="266">Sunday, September 4, 2011</option><option value="265">Saturday, September 3, 2011</option><option value="264">Friday, September 2, 2011</option><option value="263">Thursday, September 1, 2011</option><option value="262">Wednesday, August 31, 2011</option><option value="261">Tuesday, August 30, 2011</option><option value="260">Monday, August 29, 2011</option><option value="259">Sunday, August 28, 2011</option><option value="258">Saturday, August 27, 2011</option><option value="257">Friday, August 26, 2011</option><option value="256">Thursday, August 25, 2011</option><option value="255">Wednesday, August 24, 2011</option><option value="254">Tuesday, August 23, 2011</option><option value="253">Monday, August 22, 2011</option></select></p>

Любые идеи будут полезны.

1 Ответ

2 голосов
/ 28 августа 2011

На основании вашего комментария в ответ на мой:

Вывод URL.day выглядит как 2011-09-5 © _day = 260

Понятно, почему вы получаете неожиданные результаты (ну: неожиданно для вас ... код работает нормально!) ... "2011-09-5 © _day = 260" не может быть проанализирован как дата, поэтому он не проходит проверку isDate ().

Вам необходимо вернуться к коду, который вызывает этот код, и выяснить, почему вы передаете эти данные в URL. Для меня это выглядит как попытка избежать амперсанда в & copy_day, и он видит & copy как & copy; и преобразует его в символ авторского права.

Может помочь просмотр кода вызова. Но, как говорят другие, просто СООТВЕТСТВУЮЩИЙ бит!

...