2012-02-24 51 views
0

以下是只输入字母,数字,空格,del,退格的脚本。在这段代码中,我需要做出改变,如果第一个位置的“输入”是“空白区域”,并且在用户输入中没有其他的输入,那么它应该返回false否则true复杂的字符串操作

JS

function usrInp(evt) { 
var char = (evt.which) ? evt.which : event.keyCode 
if (char > 64 && inp < 91 || char > 96 && char < 123 || char > 47 && char < 58 || char  == 127 || char == 8 || char == 32) { 
    return true; 
} 
else { 
    return false; 
} 
} 

FORM HTML

<form name="one" id="one"> 
    <input type="text" name="abc" id="abc" onkeypress="return usrInp(event)" /> 
</form> 
+0

你是否尝试过使用正则表达式? – Fermin 2012-02-24 08:43:45

+0

@Fermin如何在这里实现...? – sandbox 2012-02-24 08:46:23

回答

0

为什么不能正则表达式?

return input.match(/^[\w\s]*$/g) != null 

如果输入仅包含A-Z,0-9,空格或下划线,则返回true。

+0

但我需要检查第一个位置的“输入”是否为“空白区域”,并且在用户输入中没有进一步的字母数字字符,它应该返回false,对于所有其他情况,它应该返回true。这意味着,字符串可以在...上有'White Spaces'... – sandbox 2012-02-24 08:52:14

+0

编辑,略微改进它。 – Jivings 2012-02-24 08:54:16

+0

@sandbox因此,从一个空间开始?并没有其他的字母或数字? – Jivings 2012-02-24 08:55:00

0

使用keypress事件不会捕获退格键,您需要使用keyup。如果你想获得被按下的键的ascii值,你可以使用:

function usrInp(evt) { 
    var char = (evt.which) ? evt.which : event.keyCode 
    return String.fromCharCode(char).match(/^[A-Z0-9 _]*$/); 
}