2009-08-11 6 views
1

Ich habe ein benutzerdefiniertes Attribut, das aus einer Datenbank gefüllt wird. Dieses Attribut kann einen eingebetteten Apostroph wie diese enthalten,Jquery eingebettetes Zitat in Attribut

MYATT='Tony\'s Test' 

Irgend pont in meinem Code ich jQuery verwenden dieses Attribut auf einem Feld wie diese zu kopieren,

$('#MY_DESC').val($(recdata).attr('MYATT')); 

MY_DESC ist ein Textfeld in ein Dialogfeld Wenn ich das Dialogfeld angezeigt wird alles, was ich auf dem Feld zu sehen ist

Tony \

Was ich sehen muß, ist

Tonys-Test

Wie kann ich dieses Problem beheben, so Ich kann die gesamte Saite sehen?

Antwort

2

Versuchen:

MYATT='Tony&#x27s Test' 

ich nicht die Mühe, dies mit der HTML-Spezifikation zu überprüfen, aber die wikipedia Eintrag sagt:

The ability to "escape" characters in this way allows for the characters < and & (when written as &lt; and &amp;, respectively) to be interpreted as character data, rather than markup. For example, a literal < normally indicates the start of a tag, and & normally indicates the start of a character entity reference or numeric character reference; writing it as &amp; or &#x26; or &#38; allows & to be included in the content of elements or the values of attributes. The double-quote character ("), when used to quote an attribute value, must also be escaped as &quot; or &#x22; or &#34; when it appears within the attribute value itself. The single-quote character ('), when used to quote an attribute value, must also be escaped as &#x27; or &#39; (should NOT be escaped as &apos; except in XHTML documents) when it appears within the attribute value itself. However, since document authors often overlook the need to escape these characters, browsers tend to be very forgiving, treating them as markup only when subsequent text appears to confirm that intent.

+0

Das hat gut funktioniert. Danke –

0

Bevor Sie den Wert Ihres Textfelds festlegen, können Sie versuchen, einen regulären Ausdruck für die Zeichenfolge auszuführen, um alle umgekehrten Schrägstriche aus der Zeichenfolge zu entfernen.

+0

Ich kann den Backslash entfernen, was ich brauche, ist das eingebettete Zitat. –

1

Im Fall werden Sie nicht Verwenden Sie doppelte Anführungszeichen, setzen Sie Ihr benutzerdefiniertes Attribut in sie :) Wenn nicht, empfehle ich, den Wert zu entkommen.

0

Wenn Sie dies tun:

alert ($ (RecData) .attr ('MYATT'));

Sie sehen das gleiche Ergebnis von "Tony", was bedeutet, dass der Wert nicht korrekt vom Browser konsumiert wird. Der Escape-Wert funktioniert in diesem Fall nicht.

Haben Sie die Möglichkeit, diese Werte während der Produktion zu bearbeiten? Können Sie sie analysieren, um Escape-Werte einzubeziehen, bevor sie gerendert werden?