2013-03-13 27 views
0

我對我的限制。 我必須爲Web應用程序實現一些功能。問題是,由於公司的政策,它只能在IE8上實現...... IE8甚至不會正常加載jsFiddle。我收到了任何可能的和不可理解的錯誤。 我有很多PHP腳本,並作爲響應(ajax-request)從其中一個我得到一些數據表。 如果我點擊這個元素,出現一個編輯框,我可以修改這個值。 第一個問題是,如果我首先點擊這個元素,我只能修改這個值,但我不能在其他地方設置光標。首先是開始。如果我點擊框中的其他任何地方,光標消失,我什麼也做不了。 我認爲這是我的代碼中的問題。但是......我剛剛將一些相關代碼複製到一個新文件中(由於策略和版權,我無法在此處發佈整個代碼),並且出現了一些像「預期的對象」這樣的愚蠢錯誤,儘管該值已經是一個對象!IE8 jQuery將光標置於文本框中可能只在開始

下面的代碼:

<!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> 

請幫助我的人......我只是不明白,爲什麼我不能把光標放在正常。 和爲什麼我會得到這樣的愚蠢錯誤 我看着調試器,任何事情都有idetically與其他呼叫(從Ajax的PHP),但在這裏它不會與預期「對象進行的$(值)......

第一個問題「解決 SRC =」 - > < - 。/的JavaScript/jQuery的1.9.1 只是一個點

但現在你可以看到我的問題與光標哪有我當我剛剛有一個正常的「文本框」(輸入類型=「文本」值=「blabla」.....)時,我就可以設置我的光標

編輯 得到了一些有趣的東西。因爲它似乎是我必須使用$('#editbox')。focus(); 任何想法如何釋放光標?

+0

你有兩個td與相同的id是無效的html。實際上,即使表格也有相同的編號... – 2013-03-13 15:25:46

+0

抱歉,錯誤來自複製+粘貼,我已更正它,所有問題仍然存在 – x4k3p 2013-03-13 15:28:22

回答

0

時需要您傳遞一個HTML元素的功能,你的腳本改變這樣的事情

<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> 

,它不傳遞一個jQuery對象,只是一個DOM對象。使用$(「#」+ value.id)查找DOM對象並將其轉換爲jQuery對象。

+1

如果您要查找'$(「#」+ value.id)'所有的時候,你都應該將它緩存在某個地方。 – Marco 2013-03-13 16:27:56

+0

我同意。粉筆它快速編輯和回答:) – Robbert 2013-03-13 19:49:09

相關問題