2016-08-05 16 views
3

Ich verwende JQuery, um dynamisch eine neue Zeile zu einer Tabelle hinzuzufügen.
Ich möchte einen Platzhalter in den Tabellenzellen haben, die verschwinden, wenn der Benutzer auf die Texteingabe klickt.
Ich habe versucht, CSS, das dies tun würde. HierBenutzerdefinierter Platzhalter innerhalb des Elements wird nicht angezeigt

ist die JQuery:

$("#addbutton").click(function(){ 
    $('#searchresults > tbody:last-child').append('<tr><td> <div contentEditable="true" data-text="Enter Name"></div> </td> \ 
                 <td><div contentEditable="true" data-text="Enter Description"> </div> </td> 
                </tr>') 

Hier ist die CSS:

<style> 
[contentEditable=true]:empty:not(:focus):before{ 
    content:attr(data-text) 
} 
</style> 

Der Platzhalter Text ist nicht zeigt nach oben.
Irgendwelche Vorschläge?

Ive die Frage aktualisiert, so dass die neue Zeile korrekt in der Zeichenfolge in .append('') gespleißt wird Ich kann immer noch nicht den Text angezeigt werden. Ich benutze Safari auf El Capitan. Die neue Zeile wird hinzugefügt und ist editierbar, aber der Text ist nicht da!

Die Zeilen werden hinzugefügt und sind auch editierbar. Es ist nur so, dass der Text nicht sichtbar ist.

Antwort

2

Das einzige Problem, das ich sehe, ist die neuen Linien: Wenn Sie in der nächsten Zeile fortsetzen müssen müssen Sie die neue Linie char zu entkommen wie in:

var str = '11111\ 
llllllll'; 

Das Snippet:

$(function() { 
 
    $("#addbutton").click(function() { 
 
    $('#searchresults > tbody:last-child').append('<tr><td><div contentEditable="true" data-text="Enter Name"></div></td>\ 
 
<td><div contentEditable="true" data-text="Enter Description"></div></td>\ 
 
</tr>'); 
 
    }); 
 
});
[contentEditable=true]:empty:not(:focus):before{ 
 
    content:attr(data-text) 
 
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<button id="addbutton">addbutton</button> 
 
<table id="searchresults"> 
 
    <tbody> 
 

 
    </tbody> 
 
</table>

+0

Immer noch kann der Text nicht angezeigt werden. Seltsam – marc

+0

@asehgal Hat es in meinem Schnipsel funktioniert? – gaetanoM

+0

Es geht um den Charakter entkommen. Hier ist ein [CodePen] (http://codepen.io/Bes7web/pen/YWJJEE) aus @gaetanoM Code. Aber wenn du "fliehst", wie er es vorschlägt, ziehe am nächsten Zeilenende ** UND ** deine nächste Zeile mit Tabulatoren ... Naaah. Der Fluch zählt nur für den Zeilenumbruch! Schauen Sie sich meine [CodePen hier] (http://codepen.io/Bes7web/pen/xOyyRV), die cool Eindruck ermöglicht –

0
$("#addbutton").click(function(){ 
    $('#searchresults > tbody:last-child').append('<tr><td> <div contentEditable="true" data-text="Enter Name"></div> </td> \ 
                 <td><div contentEditable="true" data-text="Enter Description"></div></td> 
                </tr>') 

Es war ein Abstand zwischen <td> <div> wie oben gesehen. Jemand hat die Frage bearbeitet und sie entfernt.

Bitte bearbeiten Sie Fragen nicht nach Ihren eigenen Wünschen. Anscheinend hinzufügen Platz in kann Dinge vermasseln!

+0

?? Leerzeichen in einer Zeichenfolge sind nicht das Problem. Ich habe nie ein Problem mit einem Leerzeichen zwischen "td" und "div" in HTML gesehen. Problem ist String-Abgrenzung in JS. –

+0

Ja, Sie können Recht haben, da ich HTML INSIDE JS verwende. – marc