【发布时间】:2010-10-13 11:24:58
【问题描述】:
是否可以不手动更改按键输入的字符?
例如,如果我想根据某些条件强制使用大写字母,最好执行以下操作:
function onKeypressHandler(e)
{
if ( condition )
{
e.which -= 32;
}
}
但这当然行不通。
注意:这不是全面大写,而是仅特定字符。
也许我想说if ( e.which >= 97 && e.which <= 102 ) 或if ( Wind.Direction == 'South' ) 或其他 - 条件本身并不重要,但大写必须只适用于当前字符而不是整个输入。
我可以通过手动附加更改的字符来做到这一点,但这是一种丑陋而混乱的做法,而且可能比它可能的要慢。
function onKeypressHandler(e)
{
if ( condition )
{
$j(this).val( $j(this).val() + String.fromCharCode( e.which - 32 ) );
return false;
}
}
此方法的一个特定缺陷 - 如果选择所有输入文本并输入一个键,如果它掉入其中,那么它不会删除现有内容,而只是附加到用户想要删除的内容。 (需要调查检测任何选定的文本来解决这个问题,这使得这个更难看。)
谁能提供更好的解决方案?
【问题讨论】:
-
您将如何处理粘贴、撤消/重做、拖放或其他同时输入多个字符的情况,或者这不重要吗?
-
安迪,这在这里不是很重要,但仍然很有用 - 我想它必须涉及在 onchange 事件中手动遍历字符串?
-
或 oninput 和 onpropertychange 事件。不久前我在我的博客上概述了这些 - whattheheadsaid.com/2010/09/… 并且我有一个几乎完整的 jQuery 插件正在开发中。
标签: javascript jquery keypress