IE8 jQuery将光标放置在文本框的开头

IE8 jQuery place cursor in a textbox possible only at the beginning

本文关键字:文本 开头 jQuery 光标 IE8      更新时间:2023-09-26

我已经达到极限了。我必须实现一个web应用程序的一些功能。问题是,由于公司的政策,它只能在IE8上实现…IE8甚至不能正常加载jsFiddle。我得到任何可能的和难以理解的错误。我有很多php脚本和响应(ajax请求)从它的一个我得到一些数据表。如果我点击这个元素,就会出现一个编辑框,我可以修改这个值。第一个问题是,如果我首先单击这个元素,我只能修改这个值,但我不能在其他任何地方设置光标。一开始是在开头。如果我点击框中的其他任何地方,光标就会消失,我什么也做不了。我以为是我的代码有问题。但是…我刚刚复制了一些相关的代码到一个新的文件(我不能在这里张贴完整的代码,因为政策和版权),我得到一些愚蠢的错误,如"对象预期",虽然值已经是一个对象!

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="./JavaScript/jquery-1.9.1"></script>
<script type="text/javascript">
function modify(value){
    $('.ajax').html($('.ajax input').val());
    $('.ajax').removeClass('ajax');
    $(value).addClass('ajax');
    $(value).html(
            '<input id="editbox"' + ' type="text" value="' + $(value).text() + '"/>');
    $('#editbox').focus();
}
</script>
</head>
<body>
<table id="test" border="1">
<tr>
<td class="ajax" id="test" onclick="modify(this)">Click</td>
<td>Nothing</td>
</tr>
<tr>
<td id="tset" onclick="modify(this)">Click</td>
<td>Nothing</td>
</tr>
</table>
</body>
</html>

请帮帮我……我简直不明白,为什么我不能正常放置光标。和为什么我得到这些愚蠢的错误我查看了调试器,其他调用(来自ajax-php)都是理想的,但这里它不会继续$(value)....

解决了"object expected"的第一个问题<我> src = " -> & lt;——/JavaScript/jquery-1.9.1 只是一个点。

但是现在你可以看到我光标的问题了。我怎么能得到相同的,当我只是有一个正常的"文本框" (input type="text" value="blabla".....),我可以简单地设置我的光标在我想要的地方

编辑有件有趣的事。因为它似乎是我必须与$('#editbox').focus();有人知道如何释放游标吗?

您需要将脚本更改为如下内容

<script type="text/javascript">
 function modify(value){
   //$('.ajax').html($('.ajax input').val());
   //$('.ajax').removeClass('ajax');
   $("#" + value.id).addClass('ajax');
   $("#" + value.id).html(
           '<input id="editbox"' + ' type="text" value="' + $("#" + value.id).text() + '"/>');
   $('#editbox').focus();
}
</script>

当你将一个html元素传递给一个函数时,它不会传递一个jQuery对象,而是一个DOM对象。使用$("#" + value.id)查找DOM对象并将其转换为jQuery对象