为什么加上onkeyup="this.value=this.value.toUpperCase();光标就回不去了

jellday 2009-05-07 12:00:37
在input里加上onkeyup="this.value=this.value.toUpperCase();",或者小写,按左右键就失效了,光标会停留在最后,不能回去,测试为IE7,别的浏览器没试。

请问应该怎么解决呢?
...全文
628 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
miaozi1123 2010-10-14
  • 打赏
  • 举报
回复
把我的问题解决了,呵呵.onkeyup是所有的key按下都变大写,在firefox下没有这个问题.在所有的ie下才存在这个问题.thank you!
王集鹄 2009-05-10
  • 打赏
  • 举报
回复
ff下正常:
<html>
<body>
<input type="text" onkeyup="lCase(this)"/>
<script type="text/javascript">
function lCase(obj) {
if (obj.value != obj.value.toLowerCase())
obj.value = obj.value.toLowerCase();
}
</script>
</body>
</html>
jellday 2009-05-10
  • 打赏
  • 举报
回复
4楼问题等待解决
jellday 2009-05-08
  • 打赏
  • 举报
回复
2楼的方法可以,请问


function lCase(obj){if (obj.value != obj.value.toLowerCase()) obj.value=obj.value.toLowerCase();}


在FF下,为什么用onkeyup=lCase(this)调用会出现lCase is not defined 呢?
licip 2009-05-08
  • 打赏
  • 举报
回复
学习了。
王集鹄 2009-05-07
  • 打赏
  • 举报
回复
贴错地了

不过楼主的问题可以这样解决:
<input type="text" onkeyup="if (this.value != this.value.toUpperCase()) this.value=this.value.toUpperCase();"/>


如果没有发生变化就不用赋值
王集鹄 2009-05-07
  • 打赏
  • 举报
回复
参考如下代码:
<script type="text/javascript">
function viewPage() {
var page = window.open('', '', '');
page.opener = null;
page.document.write('<html><a href="http://blog.csdn.net/zswang">o(╯□╰)o</a><script type="text/javascript">alert("Zswang 路过。");<' + '/script></html>');
page.document.close();
}
</script>
<input type="button" onclick="viewPage()">
siu5 2009-05-07
  • 打赏
  • 举报
回复
当然啦,你的触发事件的代码"this.value=this.value.toUpperCase();"是针对整个值的,所以会使得光标停在值的最后的。
而你想做的是针对某个字母。当按左右键的时候,一样会触发你的时间,一样会运行="this.value=this.value.toUpperCase();"这句代码,于是运行完代码之后,光标当然就停在最后了。

我有事要走开,你可以考虑用event.keyCode来做。