2013-03-04 93 views
-1

我有一个小的html联系表格,其中只包含姓名和电话。如何限制输入文字

我想要做的是每当Key Up事件发生我想检查哪个键被按下,并且为Phone字段我只接受数字。对于Name字段,我只允许使用字母字母,而不是数字。

例如,如果我将数据输入到Phone输入中,并且我按任何字符而不是数字,则它不应显示在输入字段中。

我该怎么做?

+1

[?你尝试过什么(http://whathaveyoutried.com)你不是第问问这个问题。 – 2013-03-04 19:05:59

+0

显示您尝试过的内容并解释不能正常工作的内容。 – isherwood 2013-03-04 19:06:05

+0

好吧,我已经删除了我的大部分尝试,但通常,我试过的是确定哪个按键被按下,然后检查它是否是数字/字母。无法做到这一点..我检查了“Key Up”事件的E值后卡住了,因为我得到一个数字作为结果,我不知道如何检查它与哪个类别有关。 – kfirba 2013-03-04 19:10:09

回答

1

HTML

<input type="text" name="phone" id="phone" placeholder="Phone" /><br /> 
<input type="text" name="name" id="name" placeholder="Name" /> 

jQuery的

$("#phone").keyup(function() { 
    if (this.value.match(/[^0-9]/g)) { 
     this.value = this.value.replace(/[^0-9]/g, ''); 
    } 
}); 

$("#name").keyup(function() { 
    if (this.value.match(/[^a-zA-Z]/g)) { 
     this.value = this.value.replace(/[^a-zA-Z]/g, ''); 
    } 
}); 

演示:http://jsfiddle.net/calder12/KfRxv/

+0

此解决方案有效,但唯一让我感到不安的是它在删除之前实际显示数字/字母。我希望不要显示数字/字母表。那可能吗? – kfirba 2013-03-04 19:21:04

+0

老实说,我不这么认为,浏览器在它可以做任何事情之前需要知道关键值,并且它将显示第二个知道它是什么的值。 – 2013-03-04 19:41:09

+0

我明白了。有一个小问题。我的语言是希伯来语,如果我在名称字段中输入我的字母字符,它将删除它。我如何启用希伯来语? – kfirba 2013-03-04 19:48:25

1

对于数字字符只添加以下JavaScript:

function checkInput(e) 
{ 
    var k; 
    document.all ? k = e.keyCode : k = e.which; 
    var char = String.fromCharCode(k); 
    if(!char.match(/^\d+$/))return false; 

    return true; 
} 

然后在标记您的输入元素添加onkeypress事件= “返回checkInput(事件)”。

您可以修改JS只允许任何你想要的字符。

+0

适用于数字,但是如果我按下BackSpace?有一个问题:s – kfirba 2013-03-04 19:21:33

+0

您可以将正则表达式更改为(/ [\ d \ b \] /)以获得允许的数字和退格。真的,你会得到正则表达式的小提琴,使它适合任何你想要的,但JS将保持不变。如果你想只允许字母字符,你会改变它的正则表达式,如果你只想允许特殊字符等,那么JS就是一个框架,而不是复制粘贴到你的网站。 – Geneb 2013-03-04 19:51:46