Javascript 按键事件-事件发生后如何删除按键?
我的目标是:当用户单击某个键时,我需要将该键与字符串的第一个字母进行比较。如果匹配,我需要在文本字段中写入该字符串 通过使用按键功能,其工作方式如下:Javascript 按键事件-事件发生后如何删除按键?,javascript,Javascript,我的目标是:当用户单击某个键时,我需要将该键与字符串的第一个字母进行比较。如果匹配,我需要在文本字段中写入该字符串 通过使用按键功能,其工作方式如下: 输入用按键调用的函数 2.在其功能中: document.getElementById(“name”).value=“shiran” 然后添加用户按下的字符(将是s) 结果是“shiran”,而不仅仅是字符串(“shiran”) 我不能使用keyup和keydown函数,因为它们不能与keycode一起工作 所需结果:文本字段中的字符串 实际结果
document.getElementById(“name”).value=“shiran”
<!DOCTYPE html>
<html>
<head><title>cookies</title>
</head>
<body>
<form >
user name: <input type = "text" id='name' onkeypress='completeFields(event);'> </br>
</form>
<script>
function completeFields(e){
//get the key
var unicode;
if (e.keyCode)
unicode = e.keyCode;
else
unicode = e.charCode;
var username="shiran";
var ch1=username.charAt(0);
var ch2 = String.fromCharCode(unicode);
if(username!=null && username!="" && ch1==ch2)
{
document.getElementById("name").value="shiran";
}
}
</script>
</body>
</html>
饼干
用户名:
函数completeFields(e){
//拿到钥匙
var-unicode;
如果(例如键码)
unicode=e.keyCode;
其他的
unicode=e.charCode;
var username=“shiran”;
var ch1=username.charAt(0);
var ch2=String.fromCharCode(unicode);
如果(用户名!=null&&username!=“”&&ch1==ch2)
{
document.getElementById(“name”).value=“shiran”;
}
}
这就是你想要做的吗
相关JavaScript:
(function (D, S, undefined) {
'use strict';
var base, field;
field = D.getElementById('name');
base = 'shiran';
field.onkeypress = function (e) {
var char;
char = S.fromCharCode(e.keyCode);
if (char !== base[0]) {
e.preventDefault();
}
};
}(document, String));
并且,嵌入到OP代码的清理版本中:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8" />
<title>cookies</title>
</head>
<body>
<form >
<label>
<span>user name: </span>
<input data-base="shiran" id="name" onkeypress="autoComplete(event);" type="text">
</label>
</form>
<script>
(function (S, W, undefined) {
'use strict';
function autoComplete (e) {
var base, char, input, value;
input = e.currentTarget;
base = input.dataset.base;
value = input.value;
char = S.fromCharCode(e.keyCode);
// We'll handle the keyup if the char isn't just whitespace
if (!/\s+/.test(char)) {
e.preventDefault();
}
if (char === base[value.length]){
input.value = base;
}
}
W.autoComplete = autoComplete;
}(String, window));
</script>
</body>
</html>
饼干
用户名:
(功能(S、W、未定义){
"严格使用",;
函数自动完成(e){
var基、字符、输入、值;
输入=e.currentTarget;
base=input.dataset.base;
value=input.value;
char=S.fromCharCode(e.keyCode);
//如果字符不仅仅是空白,我们将处理keyup
如果(!/\s+/.test(char)){
e、 预防默认值();
}
if(char==base[value.length]){
input.value=基数;
}
}
W.自动完成=自动完成;
}(字符串、窗口);
使用事件.preventDefault
方法或return false
防止浏览器事件-在输入中添加字符。问题是什么?如果这不起作用,请描述它与所需行为的区别。不确定链接是否指向正确的bin。请注意“我不能使用keyup和keydown函数,因为它们不能与keycode一起使用”:它们肯定会这样做。如果它们没有出现在你的代码中,那么你的代码是错误的,而不是事件没有使用KeyCode。有趣的是,你这么说。。因为如果你是对的,那么我可以简单地使用功能keyup而不是keypress。。这样我就不会有任何问题了……但我不能担心。我不明白你做了什么。我加了一把小提琴,想把它弄清楚。基本上,我使用的是e.preventDefault()代码>以防止事件传播。请将其添加到我的原始代码中,好吗?我不知道怎么做。@jameslafferty。。非常感谢你的努力。。然而这不符合我在艾尔的愿望。。我只想删除事件keypress happend后附加到文本字段的最后一个字符。。并将它的字符串保留在文本字段中..您是否希望复制一种自动完成功能?(调整代码很容易,只是可能不清楚你在问什么。)return false不起作用。我将event.preventDefault?function completeFields(e){e.preventDefault()
…其他代码放置在shell的何处