2012-02-13 20 views
0

我有插件格式編號。並且我想改進吧。如果用戶在文本框中輸入了一個小數分隔符,則用戶不要輸入「,」或「。」在文本框中。如何在jquery中檢查用戶輸入的文本框中的小數點分隔符

例如:沒有允許用戶輸入11111,55 ,, 44 .. - >允許用戶輸入:11111,5554455

這裏我的插件:

$.fn.myPlugin = function(options) 
{ 
    options = $.extend({}, { 
     thousands: '.', 
     decimal: ',' 
    }, options); 

    this.keyup(function() 
    { 
     $(this).val(function(el, val) 
     { 
      val = val.replace(/[^\d.,]/g, '').split(options.decimal); 
      val[0] = val[0].replace(options.decimal === '.' ? /,/g : /\./g, ''); 
      val[0] = val[0].replace(/(\d)(?=(\d{3})+$)/g, "$1" + options.thousands); 
      return val.join(options.decimal); 

     }); 
    }); 
}; 
+0

我可以理解你的例子,但我不明白這是如何涉及到你的問題。 – elclanrs 2012-02-13 03:22:06

+0

你好elcalnrs。我的意思是不允許用戶在文本框中輸入11111,55 ,, .. 4。用戶只能輸入11111,5545555。你能幫我改進這個jQuery插件嗎? – minh 2012-02-13 04:19:09

回答

0

不知道我得到了你尋找,但這裏的匆匆做了一個寫得不好的例子來介紹怎麼可以做這樣的事情與迭代:

$("#test").on('keyup', function() { 
    var V = $(this).val().split(''), A=[], L=V.length; 
    for (var i=0; i<L; i++) { 
     var E=V[i]; 
     if (E=='.' && A.indexOf(E)!=-1) {}else{A.push(E);} 
     var Q=A.join(''); 
    } 
    $(this).val(Q); 
}); 

有一個fiddle here的努力呢?

+0

這是沒有工作,但謝謝你的幫助。 – minh 2012-02-13 04:47:27

1

我想這就是你要找的。無論何時輸入多個句點或逗號,它都會將其刪除。

$('input').keyup(function(){ 
    var value = $(this).val(), 
     patt = /(,.*?,|\..*?\.)/; 
    if (patt.test(value)) { $(this).val(value.slice(0, -1)); } 
}); 

http://jsfiddle.net/elclanrs/t8G2q/4/

+0

非常感謝您的幫助。 – minh 2012-02-13 06:16:29

+0

你好elclanrs你上面寫的代碼有問題。當我在文本框中輸入數字:1111111 - >輸出:1.111.1它不是值。值爲真:1.111.111。我認爲「切片」有問題。你能幫我解決嗎? – minh 2012-02-20 05:37:30

+0

???我不明白。你能解釋得更好嗎? – elclanrs 2012-02-20 05:38:51

0

@minh,如果你只是想檢查是否有隻有一個 「」 或 「」在輸入號碼時,你可以簡單地這樣做:

val.match(/^\d+([.,]\d+)?$/)

我也許正是你要檢查什麼誤解。如果是這樣,請發表評論。

+0

你是正則表達式的人!大聲笑。我必須研究這些東西...... – elclanrs 2012-02-13 06:19:45

相關問題