2013-06-19 42 views
0

我正在創建基本上只有數字的字段,並且逗號分隔符在千位,百萬位等處插入。使用逗號分隔符的「僅數字」字段

In似乎遇到的第一個問題是keycode 188是否適用於逗號。當在這裏使用的代碼,我無法真正鍵入一個逗號進入該領域,儘管我似乎已經從返回false排除它:

function forceNumber(event){ 
    var keyCode = event.keyCode ? event.keyCode : event.charCode; 
    if((keyCode < 48 || keyCode > 58) && keyCode != 188) 
     return false; 
} 

這裏是我使用添加逗號分隔符的腳本,我不完全確定它是否是這個腳本,只是被引用的腳本,或者我如何在PHP文件中調用它們導致它不起作用。這裏是逗號插入JS:

function numberWithCommas(n){ 
    n = n.replace(/,/g, ""); 
    var s=n.split('.')[1]; 
    (s) ? s="."+s : s=""; 
    n=n.split('.')[0] 
    while(n.length>3){ 
     s=","+n.substr(n.length-3,3)+s; 
     n=n.substr(0,n.length-3) 
    } 
    return n+s 
} 

最後的PHP電話:

<p> 
      <label for="yearly_income"><?php _e('Yearly Income<br><i>Used to determine fee per session</i>','mydomain') ?><br /> 
       <input type="number" name="yearly_income" id="yearly_income"  class="input" value="<?php echo esc_attr(stripslashes($yearly_income)); ?>" size="25"  onkeypress="return forceNumber(event);" onkeyup="this.value=numberWithCommas(this.value);"  /></label> 
</p> 

在這個任何援助將是美好的。令人驚訝的是,讓一個領域適合像用戶可讀和友好的方式輸入收入一樣工作是多麼複雜!

+0

您的所有用戶是否都使用相同的語言環境? – Paulpro

+0

是不是44而不是188? – epascarello

+0

永遠不要限制用戶可以鍵入的內容。相反,等待他們完成打字,然後檢查他們輸入的內容是否有效,並告訴他們是否不正確。 –

回答

0

變化type="number"type="text"

演示fiddle

的瀏覽器解釋type="number",並確保你不能把任何東西,但數量在這一領域這就是爲什麼它變成空白。

+0

謝謝摘要,工作很好,但它仍然無法在網站上工作,即使我將類型更改爲文本。 https://jannus.org/wp-login.php?action=register。對於爲什麼,我有點困惑。 – Helena

+0

我在原始PHP中修改的代碼是 Helena

+0

Chrome中的HTML無法正確顯示......但是,當我將其更改爲「',因爲它仍然沒有實現逗號。這是FF和Chrome。 – Helena