2012-04-06 5 views
-1

Я пытаюсь проверить два поля. Одно время открыто, а другое - близкое время. Моя проверка должна проверить, имеет ли значение времени закрытия значение, отличное от «00», мое открытое время должно иметь значение больше, чем «00».Проверка формы с помощью javascript в coldfusion

Мой вопрос: что я делаю неправильно? Я знаю, что у меня должна быть ошибка в моей функции.

Это подтверждение, что я написал до сих пор:

<script type="text/javascript"> 

function hoursFunction(formObject, formField, fieldValue) 
{ 
    var closeHours = document.getElementById('closeHours#CountVar#'); 
    var openHours = document.getElementById('openHours#CountVar#'); 

    if(closeHours != "00" && openHours == "00") 
    { 
    sfm_show_error_msg('Enter a valid opening time'); 
    } 
} 

И это образец моей формы

<form id="hoursForm" action="physician_businessHours.cfm?docID=<cfoutput>#docid#</cfoutput>" method="post" onsubmit="hoursFunction();"> 
      <input type="hidden" name="postitnow" value="yes"> 


        <table border="1"> 

        <tr> 
         <th>Day</th><th>Open Time</th><th>Close Time</th> 
        </tr> 


        <cfloop from="1" to="7" index="CountVar"> 

        <cfset dayFound= 0> 
        <tr> 
         <td><cfif CountVar eq 1>Mon<cfelseif CountVar eq 2>Tues<cfelseif CountVar eq 3>Wednes<cfelseif CountVar eq 4>Thurs<cfelseif CountVar eq 5>Fri<cfelseif CountVar eq 6>Satur<cfelseif CountVar eq 7>Sun</cfif>day</td> 

         <cfoutput> 

         <td> 
         <select id="openHours#CountVar#" name="openHours#CountVar#"> 
         <cfloop query="doctorHours"> 
         <cfloop from="00" to="23" index="OpenHours"> 
         <option value="#openHours#"<cfif TimeFormat(doctorHours.openTime,'HH') EQ OpenHours AND CountVar EQ doctorHours.day > selected="selected"</cfif>>#OpenHours#</option> 
         </cfloop> 
         </cfloop> 
         </select> 
         </td> 

    <td>  
         <select id="closeHours#CountVar#" name="closeHours#CountVar#"> 
         <cfloop query="doctorHours"> 
         <cfloop from="00" to="23" index="closeHours"> 
         <option value="#closeHours#" 
         <cfif TimeFormat(doctorHours.closeTime,'HH') EQ closeHours AND CountVar EQ doctorHours.day > selected="selected"</cfif>>#closeHours#</option> 
         </cfloop> 
         </cfloop> 
         </select> 
         </td> 
         </tr> 

     <input type="hidden" name="Validate" onValidate="hoursFunction" message="You must select an opening hour"> 

    <input type="submit" value="Update" id="Submit"> 
        ' 
+1

Что вы думаете? – Tuan

ответ

0

Это код, который я написал, и она отлично работает до сих пор:

function hoursFunction() 
{ 

    var i = 0; 
    var openHour; 
    var closeHour; 

    for(i=1;i<8;i++) 
    { 
    openHour = document.getElementById("openHours" + i).value; 
    closeHour= document.getElementById("closeHours" + i).value; 

    if(openHour > closeHour) 
    { 
     document.getElementById('error').innerHTML= "Error at " + i; 
     return false; 
    } 
    document.getElementById('error').innerHTML= "No Error occured"; 
    return true; 
    } 
} 

Моя проблема в настоящее время является то, что когда я отправить форму, кажется, что форма сделав обновление и удалив все мои данные ... Любые мысли по этому поводу?

1

Вы должны захватить значения из ваших элементов:

var closeHours = document.getElementById('closeHours#CountVar#').value; 
    var openHours = document.getElementById('openHours#CountVar#').value; 
+0

Nop, не работает. Мне нужна петля for внутри моей функции, чтобы получить все эти значения, но по какой-то причине мой цикл for не работает – Geo

1

Я вижу. Вам нужно получить правильные идентификаторы элементов:

for (var i = 0; i < 7; i++) { 
    var closeHours = document.getElementById('closeHours' + i).value; 
    var openHours = document.getElementById('openHours' + i).value; 

    if (closeHours != "00" && openHours == "00") { 
     sfm_show_error_msg('Enter a valid opening time'); 
    } 
} 
+0

Это может сработать. Я скоро вернусь к вам. Спасибо – Geo

1

Ваш CountVar начинается с 1, а не 0, поэтому цикл for должен быть одинаковым. Плюс, чтобы предотвратить отправку формы, ваш hoursFunction() должен возвращать false, если форма не проверяется. Кроме того, ваши часыFunction() ожидает 3 аргумента, но вы не передаете их никому - эти аргументы в этом случае не нужны, поэтому просто удалите их из определения функции. Попробуйте функцию ниже:

function hoursFunction() { 
    for (var i = 1; i <= 7; i++) { 
    var closeHours = document.getElementById('closeHours' + i).value; 
    var openHours = document.getElementById('openHours' + i).value; 
    if (closeHours != "00" && openHours == "00") { 
     sfm_show_error_msg('Enter a valid opening time'); 
     return false; 
    } 
    return true; 
    } 
} 
+0

Спасибо за ваш код и время, но ваше решение не работает. Проверьте мой ответ на то, как я написал код, и, возможно, вы могли бы помочь мне с другой проблемой, которая возникла – Geo

Смежные вопросы