2010-10-06 47 views
0

說明:開始時,該字段的值爲YYYY-MM-DD。如果用戶刪除了該值並且沒有輸入任何內容,則應該禁用「ok」按鈕。如果用戶刪除該值並鍵入新值,則應啓用「ok」按鈕。該代碼僅適用於第二種情況。onkey事件 - 禁用按鈕問題

function ChangeOkButton() 
    { 
    if(document.getElementById('fromDate').value == null) 
     { document.getElementById('save').disabled = true; } 
    else {document.getElementById('save').disabled = false; } 
    } 

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeypress="ChangeOkButton();"/> 

這可能嗎?

謝謝!

回答

0

該函數對於這種類型的控件並不是很有用,因爲您可以用'12345','foobar'或其他與實際值不同的值來覆蓋該值。我想您是從2000-01-01

function ChangeOkButton(field) { 
    var okbtt = document.getElementById('save'); 
    if ((/^(YYYY\-MM\-DD|2\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[12]\{d}|3[01]))$/).test(field.value)) { 
     okbtt.removeAttribute('disabled'); 
    } 
    else { 
     okbtt.disabled = 'disabled'; 
    } 
} 

日起,你的輸入是

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeyup="ChangeOkButton(this);"/> 

請注意,我還沒有考慮閏年或每月的天,這僅僅是一個更可靠控制用戶輸入的數據類型。根據需要更改正則表達式

注意:考慮將「okbtt」變量放在函數的外部,否則每次調用此函數時都需要獲取參考。可怕。

+0

10x!不幸的是它不能正常工作。即使在現場沒有任何價值的時候,按鈕仍然可用。 – Ronny 2010-10-06 13:37:56

+0

我嘗試了FF3.6,它的工作原理,只是改變「onkeyup」onkeypress「 – 2010-10-06 13:51:01

+0

我在firebut錯誤:'字段是undefined [打破這個錯誤]如果((/ ^(YYYY \ -MM \ -DD | 2 \ d {3} \ - (0 [1-9 ...] \ {d} | 3 [01]))$ /)。test(field.value)){' – Ronny 2010-10-06 14:00:05