2013-04-28 76 views
-1

我正在嘗試使JavaScript函數驗證字段中的月份和年份。在球場上的日期的格式是MM/YYYY並驗證它下面的一個功能:Uncaught TypeError:Object#<Object> has no method'replace'

function validateVencimento(){ 
    var valid = true; 
    var currentTime = new Date(); 
    var actualMonth = currentTime.getMonth() + 1; 
    var actualYear = currentTime.getFullYear(); 
    vencimento = vencimento.replace('///g', ''); 

    var month = parseInt(vencimento.substring(0, 2),10); 
    var year = parseInt(vencimento.substring(2, 6),10); 

    if((month < 1) || (month > 12)) valid = false; 
    if((year < actualYear)) valid = false; 
    if((year < actualYear) && (month < actualMonth)) valid = false; 

    if(valid == false){ 
     vencimento.addClass("error"); 
     vencimentoInfo.text("A validade do cartao esta invalida!"); 
     vencimentoInfo.addClass("error"); 
     return false; 
    } 

    else{ 
     vencimento.removeClass("error"); 
     vencimentoInfo.text(""); 
     vencimentoInfo.removeClass("error"); 
     return true; 
    } 
} 

後,我進入的領域我撥打以上功能上模糊的日期,但在Chrome控制檯回報錯誤Uncaught TypeError:Object#沒有方法'replace'。

+0

請問行號?一個jsFiddle測試用例也會有很大的幫助。 – 2013-04-28 22:11:49

+6

'vencimento'在哪裏定義? – Matthew 2013-04-28 22:12:04

+0

哦,不需要,代碼中只有一個'replace',哈哈哈。 你在哪裏定義了'vencimento'變量?它在全球範圍內嗎? – 2013-04-28 22:12:37

回答

3

它看起來像你使用vencimento作爲一個字符串和一個jQuery對象。你不能那樣做。也許做一個新的變量vencimentoText這樣的:

var vencimentoText = vencimento.val(); 

無論你目前正在使用它作爲一個字符串,然後使用vencimentoText(例如,replacesubstring等,但不addClass等)

+0

@ T.J.Crowder:在沒有任何其他信息的情況下,'text','addClass'和'removeClass'方法指示jQuery。 – icktoofay 2013-04-28 22:15:28

+0

@ ick:是的,對不起,我剛剛看到那些(但是在看到評論之前可惜沒有刪除!)。我認爲你在那裏相當穩固。 :-) – 2013-04-28 22:15:52

+0

@ T.J.Crowder,'.addClass','.removeClass'和'.text'聽起來很漂亮jQuery-ish。 – 2013-04-28 22:16:09

相關問題