2013-06-19 43 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