2011-06-30 96 views
0

我有這樣的代碼;OnBlur賦值給Javascript中的函數

<script type="text/javascript"> 

var ID= document.getElementById('customfield_10033'); 
var IDNumber= document.getElementById('customfield_10033').value; 

    ID.onblur=function(IDNumber) 
{ 

    if ((IDNumber!="") && (IDNumber.length!=11)){ 
    alert("Your ID number should 11 digits."); 
} 

但是,當我輸入身份證號碼有11位數字,我顯示報警功能。但它不應該。

我覺得我做錯了分配的onblur屬性來發揮作用.. ID.onblur=function(IDNumber)

我怎麼能解決這個問題的代碼?

回答

3

您定義IDNumber如果您分配了事件處理程序(所以它可能會抱着你設置字段的默認值是),但你幾乎肯定希望在模糊事件發生來定義它

移動

var IDNumber= document.getElementById('customfield_10033').value; 

內部事件處理函數。

(因爲你已經有了一個對元素的引用這將是更有效地做var IDNumber = ID.value;太)

1

你應該有這樣的事情,而不是:

ID.onblur = function(IDNumber) 
{ 
    var IDNumber = ID.value; 
    if (IDNumber !== "" && IDNumber.length !== 11) 
    { 
     alert("Your ID number should 11 digits."); 
    } 
} 

通過分配value爲變量,您放置靜態數據,而不是指向該值的指針,因此您必須每次都閱讀「實時」值。

+0

也對喜歡昆汀的回答。 –

+1

乾杯,他比我快了20秒,哈哈:) –

-1

您忘記關閉if語句。試試這個:

if ((IDNumber!="") && (IDNumber.length!=11)) { 
    alert("Your ID number should 11 digits."); 
} 

問候, 托馬斯

+0

我把你的代碼運行在jsfiddle中,發現有一個括號丟失。有時候錯誤就這麼簡單,所以我只是想讓我知道。我沒有發佈這個作爲一個自鳴得意的評論或類似的東西。 – tkahn