更改按下的键的 charCode
Posted
技术标签:
【中文标题】更改按下的键的 charCode【英文标题】:Changing the charCode of the key pressed 【发布时间】:2012-03-10 00:38:52 【问题描述】:在下面的示例中,我试图,但它没有改变。当我按“a”时,我希望它输入“b”。我做错了什么?
$("#target").keypress(function(event)
if ( event.which == 97 )
//alert('pressed a');
//event.preventDefault();
event.keyCode = 98;
event.charCode = 98;
event.which = 98;
);
【问题讨论】:
我不确定你能否像这样覆盖字符代码。你有参考说明这是可能的吗? @Pekka。可以这样做: @gdoron 是的,看到了!这是一个很好的解决方法。 (您不能一般修改该值并将其进一步传递到事件链中,这就是我的意思。) @Pekka。是的......我赞成你的评论...... =) @Pekka gdorons 方法的问题是,如果光标位于文本中间,或者选择了某些内容,它将无法工作。 【参考方案1】:您不能覆盖事件对象中的键码...
看看这个sn-p:
$('#target').keypress(function(e)
if (e.which == 97)
this.value = this.value + String.fromCharCode(98)
else
this.value = this.value + String.fromCharCode(e.which)
....
return false;
)
【讨论】:
这是否意味着这样做(OP问)我可以用新字符替换输入并再次触发事件? @Heera。我没有完全理解你的意思,但它不会再次触发事件。 如果我想在用户输入 a 时触发带有字符 b 的事件怎么办? @Heera。您可以使用$(this).keypress()
解决问题,但 *WHY 您需要这样做吗?
这样做的问题是,如果光标在文本中间,或者如果选择了某些内容,它将不起作用。【参考方案2】:
将逗号和破折号替换为斜杠。
$('.pdate').on('keypress', function (e)
var ch = String.fromCharCode(e.keyCode);
$("div").text(e.keyCode)
if (!((ch >= '0' && ch <= '9') ||
ch == '/' || ch == ',' || ch == '-'))
return false;
if (ch == ',' || ch == '-')
var val = $(this).val();
var s = this.selectionStart;
val = val.slice(0, s) + "/" + val.slice(s, val.length);
$(this).val(val)
this.selectionStart = s +1;
this.selectionEnd = s +1;
return false;
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" class="pdate" />
<div></div>
【讨论】:
以上是关于更改按下的键的 charCode的主要内容,如果未能解决你的问题,请参考以下文章