0

我已经到了极限。我必须为 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)....

“预期对象”的第一个问题解决了 src="--> . <--/JavaScript/jquery-1.9.1 只是一点。

但是现在您可以看到我的光标问题。当我只有一个正常的“文本框”(输入类型=“文本”值=“blabla”.....)时,我怎样才能得到相同的结果,并且我可以将光标设置在我想要的任何地方

编辑 得到了一些有趣的东西。看起来我必须使用$('#editbox').focus(); 有人知道如何释放光标吗?

4

1 回答 1

0

你需要把你的脚本改成这样

<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 对象。

于 2013-03-13T15:28:43.320 回答