2012-06-15 39 views
1

我想以下面的方式使用jauery驗證文本字段:驗證負數

1.文本字段只需要0-9只用一個小數位;以及

2.如果金額輸入不是負數,請將負號放在輸入數字的 !

$('[name="pm"]').keyup(function() { 

    //? 

}); 
+2

這不是一個jQuery的東西,它是一個JavaScript的東西。我爲你添加了標籤。 –

+0

沒有冒犯,但這看起來像是「給我代碼」類型的問題。你應該考慮告訴我們你先試了什麼。 –

回答

2

安排和另外指定的解決方案替換此:

從@Some_Coder回答

1)首先做這個

http://www.texotela.co.uk/code/jquery/numeric/ 

從中場答案與修改

 
$('[name="pm"]').keyup(function() { 

    if($(this).val().indexOf('-') != 0){ 
     var val = $(this).val(); 
     $(this).val("-" + val); 
    } 


if ($(this).val() == '-') { 
      $(this).val(''); 
     } 
}); 

你會得到渴望的結果!

6

您可以通過regular expressionString#match驗證字符串:

if (this.value.match(/^-?\d+(?:\.\d){0,1}$/)) { 
    // It's valid 
} 

或者更jQuery的ISH(和上面不支持textarea可靠,只是input):

if ($(this).val().match(/^-?\d+(?:\.\d){0,1}$/)) { 
    // It's valid 
} 

(例如,this.value =>$(this).val()。)

打破正則表達式下來:

  • ^ - 串的比賽開始
  • -? - 單可選-字符
  • \d+ - 一個或多個數字(0-9)
  • (?:...) - 一個非捕獲分組,包含:
    • \.\d - 至多一個.接着是單個數字
  • {0,1} - 允許所述非捕獲分組零次或一次
  • $ - 串

注的匹配端,上述拒絕​​。如果你想接受它,它會變得更復雜,但上面的鏈接應該有所幫助。

Gratuitous live example | source

+0

我想在關鍵事件中驗證它,如上所述。當我按下負號 - 開始時,它沒有采取。但是我的要求是......第二點的帖子!(主要) –

+1

然後你可以做這個測試,但刪除' - ?'部分,然後檢查'$(this).val()。indexOf (' - ')== 0(如果它以'-'開頭),如果不是,說'var val = $(this).val()'然後'$(this).val(「 - 」+ val )'(Aargh爲什麼我總是忘記:@ShahidGhafoor) – 11684

+0

@ShahidGhafoor:強烈建議不要對密鑰進行驗證,或者至少不要採用任何侵入方式。在你的特定情況下,通過檢查「this.value!==」 - 「」,你可以很容易避免一個不必要的「無效」標誌,因爲你的字符串非常簡單。例如,'if(this.value!==「 - 」){/ * ...做驗證... * /}'。 –

1

嘗試這段代碼。

 
$('[name="pm"]').keyup(function() { 
    if($(this).val().indexOf('-') != 0){ 
     var val = $(this).val(); 
     $(this).val("-" + val); 
    } 
}); 

如果它不工作,用$( '[NAME = 「PM」]')

+0

不錯!但有兩個問題! 1)在開始時需要多個負號,我只需要一個 - 符號。2)如果用戶在開始時輸入金額然後是負號,此時,您建議解決方案,即使用戶剛剛點擊開始時放置 - 符號,只需點擊在文本字段上。 –

+0

從我上面的帖子應付.....如果金額輸入不是負面的,把負號放在輸入的數字的尾部!(如果金額已輸入,則.....)(如果空了,那麼不需要 - SYMBOL)希望我再次清除場景 –

+0

是隊友,剛剛看到你的帖子..但我看到@tjcrowder已經回答了。 – Playmaker