2009-06-25 11 views
2

私は、そのユーザーがクレジットカードの有効な月と年を選択したことを確認するためのスクリプトを開発しました。このJavaScriptに問題があります

function validatemonth() 
{ 
var dt = new Date(); 
var mth = dt.getMonth(); 
var yr = dt.getYear(); //this seems to return different data in different browsers 
yr = yr + 1900; 

if(eval(document.PurchaseCredit.cc_expire_month.value) < mth && eval(document.PurchaseCredit.cc_expire_year.value) == yr) 
{ 
    document.getElementById('error').innerHTML = "Expiry Date cannot be less than current date."; 
    document.forms['PurchaseCredit'].submit.disabled = true; 
} 
else 
{ 
    document.getElementById('error').innerHTML = ""; 
    document.forms['PurchaseCredit'].submit.disabled = false; 
} 
} 

このスクリプトはFireFoxでうまく動作しますが、IE7では動作しません。どうして?

+0

ヒント:IE8のJavaScriptやその他の問題をデバッグするための優秀開発ツールを持っています。また、IE7/Quirksモードでもページをテストできます。 – akarnokd

答えて

10

getYear()がさまざまなブラウザで異なる結果を返すため、動作しません。

のInternet Explorer:

* Returns four digits for years before 1900 and after 1999. 

のFirefox:

* Returns a value less than 0 for years before 1900. For example, the 

1800年-100を返します。 * 100以上以上例えば 2000年、に等しい年、2008年に戻り

1900のあなたの追加はFirefoxのみに関連する108の値を返します。

簡単ソリューション:にgetFullYearを(使用してみてください)

4

は試してみてください。

var yr = dt.getFullYear(); 
6

Date.getYear()ブラウザ依存しています。 Firefoxでは1900年以降の年数が返され、IEでは4桁の年が返されます。

Date.getFullYear()は、すべてのブラウザで4桁の年を返します。したがって、常に代わりに使用する必要があります。

4

getYear()の代わりにgetFullYear()を使用してみてください。両方で動作するはずです。また、getFullYear()を使用する場合は、「yr = yr + 1900」行も削除してください

関連する問題