0

入力した日付が有効かどうかを確認するための以下のコードと検証があります。「有効期限」の日付が「レビュー期限」の日付より前であるかどうかを確認するために、いくつかの簡単なJavaScript検証を追加する必要があります。有効期限がレビュー日の前の日付である場合はOK、そうでない場合はエラーアラートボックスを表示します。助けてくれてありがとう。

2つの文字列を比較して、一方が他方よりも小さいかどうかを確認できると思いますが、これを行うための最良の方法はわかりません。

<tr>
    <td class="SubHeader" height="5%">Review</td>
</tr>
<tr>
<td class="Label">Review By</td>
<td>
    <input class="amdInputText" type="text" id="guaranteereviewbydate" value="">
    <xsl:attribute name="value"><xsl:value-of select="guaranteereviewbydate"/></xsl:attribute>
    </input>
</td>
</tr>
<tr>
<td class="Label">Expire On</td>
<td><input class="amdInputText" type="text" id="guaranteeexpireondate" value="">
    <xsl:attribute name="value"><xsl:value-of select="guaranteeexpireondate"/></xsl:attribute>
    </input>
</td>
</tr>

<xsl:if test="count(../bankguaranteedata) &gt; '1'">
else if(!validateDate(document.lending.guaranteereviewbydate[<xsl:value-of select="@id"/>].value)){alert("Please enter a valid review by date. The date must be of the format dd/mm/yyyy");document.lending.guaranteereviewbydate[<xsl:value-of select="@id"/>].focus();return false;}                                  
else if(!validateDateExpireOn(document.lending.guaranteeexpireondate[<xsl:value-of select="@id"/>].value)){alert("Please enter a valid expire on date. The date must be of the format dd/mm/yyyy");document.lending.guaranteeexpireondate[<xsl:value-of select="@id"/>].focus();return false;}
</xsl:if>


<xsl:if test="count(../bankguaranteedata) = '1'">
else if(!validateDate(document.lending.guaranteereviewbydate.value)){alert("Please enter a valid review by date. The date must be of the format dd/mm/yyyy");document.lending.guaranteereviewbydate.focus();return false;}                                  
else if(!validateDateExpireOn(document.lending.guaranteeexpireondate.value)){alert("Please enter a valid expire on date. The date must be of the format dd/mm/yyyy");document.lending.guaranteeexpireondate.focus();return false;}
</xsl:if>
4

2 に答える 2

1

Dateデータ文字列を Javascriptオブジェクトに変換し、通常の演算子<とを使用してオブジェクトを比較する必要があります>

于 2013-03-04T12:33:55.923 に答える
0

上記の返信を使用して、コードを次のように調整しました。

<xsl:if test="count(../documentarycreditdata) &gt; '1'">                
else if(!compareDates(document.lending.documentaryexpireondate[<xsl:value-of select="@id"/>].value, document.lending.documentaryreviewbydate[<xsl:value-of select="@id"/>].value)){alert("Please enter an expire on date which is later than the review by date");document.lending.documentaryexpireondate[<xsl:value-of select="@id"/>].focus();return false;}
</xsl:if><xsl:if test="count(../documentarycreditdata) = '1'">          
else if(!compareDates(document.lending.documentaryexpireondate.value, document.lending.documentaryreviewbydate.value)){alert("Please enter an expire on date which is later than the review by date");document.lending.documentaryexpireondate.focus();return false;}
</xsl:if>

 function compareDates(expirydate, reviewbydate){
 if(expirydate.length <11 && reviewbydate.length <11)
    {
try{
  dayexpire = expirydate.substring(0,2);
  monthexpire = expirydate.substring(3,5);
  yearexpire = expirydate.substring(6,10);
  dayreview = reviewbydate.substring(0,2);
  monthreview = reviewbydate.substring(3,5);
  yearreview = reviewbydate.substring(6,10);
  totalexpire = expirydate.substring(3,5)+"/"+expirydate.substring(0,2)+"/"+expirydate.substring(6,10);
  totalreview = reviewbydate.substring(3,5)+"/"+reviewbydate.substring(0,2)+"/"+reviewbydate.substring(6,10);
  newexpirydate = new Date(totalexpire);
  newreviewdate = new Date(totalreview);
  if(newexpirydate < newreviewdate)
     {
       return false;
     }
  else
     return true;
}catch(e){return false;}
 }
 else
 return false;

}

日付は文字列として渡され、new Date() で受け入れられる mm/dd/yyyy 形式に入れられます。

それから私は比較を行い、動作します。

于 2013-03-04T15:46:28.213 に答える