9

Próbuję utworzyć edytowalną tabelę po stronie klienta. Oto mój kod. Działa w przeglądarce Chrome, Firefox, ale nie w IE. Czy jest coś więcej do zrobienia ze skryptem dla IE?contenteditable nie działa w IE 10

<script type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 

$("td").click(function(){ 
if($(this).attr("contentEditable") == true){ 
    $(this).attr("contentEditable","false"); 
} else { 
    $(this).attr("contentEditable","true"); 
} 
}) 
}); 
</script> 

<p> 
<table id='transitTable' border="1" cellspacing="2" cellpadding="2" class='display' width="400"> 
<tr id='1'> 
<td >H1</td> 
<td >H2</td> 
<td >H3</td> 
<td >H4</td></tr> 
<tr id='2'> 
<td >R1</td> 
<td >R1</td> 
<td >R1</td> 
<td >R1</td></tr> 
<tr id='3'> 
<td >R2</td> 
<td >R2</td> 
<td >R2</td> 
<td>R2</td></tr></table></p> 

Odpowiedz

12

Istnieje wiele elementów w IE, które nie mogą mieć bezpośrednio ustawionego zestawu contenteditable. Można jednak zawinąć cały plik table w treści do edycji div.

<div contenteditable="true"> 
    <table> 
     ... 
    </table> 
</div> 

To będzie make all the cells in the table editable. Chociaż w niektórych przeglądarkach (FF) widok będzie trochę brudny z powodu pokazanych uchwytów edycyjnych tabeli.

Inną możliwością jest dodanie, na przykład, zawartości do edycji span lub div do każdego z td.

+0

dzięki Teemu. Zadziałało. :) –

+0

@Teemu: hie. Co zrobić, jeśli chcę, aby inputbox był nieedytowalny? contenteditable = "false" nie działa w IE9. Działa dobrze z chromem. – Dharmraj

+0

@Dharmraj Możesz użyć na przykład 'readonly =" true "'. – Teemu

4

IE nie jest odpowiedzią contenteditable wewnątrz znacznika td.

Można spróbować:

<td id="my-content" class="editable"> 
    <div contentEditable="true" style="width: 100%; height: 100%;"> 
     ... 
    </div> 
</td>