2012-04-06 12 views
-1

2つのフィールドを検証しようとしています。 1つは開いた時間で、もう1つは近い時間です。私の検証は、クローズ時間が "00"以外の値を持っているかどうかをチェックする必要があります。私のオープンタイムは "00"より大きい値をもたなければなりません。ColdFusionでjavascriptを使用したフォーム検証

私の質問は、間違っていますか?私は私の機能に間違いがないとわかっています。

これは私がこれまでに書いた検証です:

<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

をリフレッシュを実行して、すべてのデータを削除しています... これについてのご意見はありますか?

1

のサンプル:

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

Nopは動作しません。私はそれらの値をすべて得ることができるように私の関数内の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は0ではなく1から始まるので、forループは同じでなければなりません。 さらに、フォームの送信を防止するために、フォームが検証されない場合、hoursFunction()はfalseを返す必要があります。 また、あなたのhoursFunction()は3つの引数を必要としますが、あなたはそれを渡すわけではありません - これらの引数はこの場合必要ではないので、関数定義から削除してください。 以下の機能試してみてください。

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; 
    } 
} 

を私の問題は、今私がフォームを送信するとき、フォームがあると思われることである:これは、これまで私が書いた、それが正常に動作コードである

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

関連する問題