当用户按下一个键时,我想检查该键并将其与某个字符串的第一个字母进行比较。如果键与第一个字母匹配:文本字段将使用该字符串自动完成。
我有一个获取用户按下的第一个键的功能。
我的问题是我不知道如何将这个KEY(在我的函数中称为unicode)与字符串的第一个字母进行比较,后者是键码还是字符码。
文本字段中的结果是:字符串+被按下的键,而不是字符串。
到目前为止,这是我的尝试:
<!DOCTYPE html>
<html>
<head></head>
<body>
<form>
user name: <input type = "text" id='name' onkeypress='completeFields(event);'> </br>
</form>
<script>
function completeFields(e){
var unicode;
if (e.keyCode)
unicode = e.keyCode;
else
unicode = e.charCode;
var username="shiran";
var chr1 = username.charAt(0);
var chr2 = unicode.toString().charAt(0);
if(username!=null && username!="" && chr2==chr1){
document.getElementById("name").value="shiran";
}
}
</script>
</body>
</html>
你需要: String.fromCharCode()
var ch = String.fromCharCode(unicode);
var chr1 = username.charAt(0);
if(username!=null && username!="" && ch==chr1){
document.getElementById("name").value="shiran";
}
此处介绍了如何在按键时使用键码和/或字符码:
关于删除用户输入字符的第二个问题,该语句document.getElementById("name").value="shiran";
已经在执行此操作了。
更新:
是的,实际上document.getElementById("name").value="shiran";
无法进行修整。这是因为您正在捕获,keypress
这意味着value
直到keyup
发生字符才分配给属性。
因此,现在您需要捕获keyup
事件。
在适当的全局范围内具有变量,并将其设置为false。一旦keypress
被成功评估,就使其成为现实。然后keyup
检查是否为真,并切掉最后一个字符。注意:这里我仅以示例的方式说明全局范围。理想情况下,您将置于适当的范围内。
全球:
var done = false;
按键:
var ch = String.fromCharCode(unicode);
var chr1 = username.charAt(0);
if(username!=null && username!="" && ch==chr1){
document.getElementById("name").value="shiran";
done = true;
} else {
done = false;
}
onkeyup:
if (done) {
var currentValue = document.getElementById("name").value;
document.getElementById("name").value = currentValue.value.slice(0, - 1);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句