Bagaimana cara saya lolos dari satu kutipan?

188

Bagaimana saya bisa lolos dari '(kutipan tunggal) dalam JavaScript?

Di sinilah saya mencoba menggunakannya:

<input type='text' id='abc' value='hel'lo'>

Hasil untuk kode di atas adalah "hel" yang terisi dalam kotak teks. Saya mencoba mengganti 'dengan \', tetapi ini yang saya dapatkan.

<input type='text' id='abc' value='hel\'lo'>

Hasil untuk kode di atas adalah "hel \" yang terisi di kotak teks.

Bagaimana saya bisa berhasil lolos dari tanda kutip tunggal?

Ravi
sumber
Hai Ravi, ini lebih merupakan pertanyaan html. Saya mengulang pertanyaan itu sebagai HTML, tetapi Anda mungkin ingin mengubahnya dalam pertanyaan Anda.
Benjamin Manns

Jawaban:

358

Anda dapat menggunakan entitas HTML:

  • &#39; untuk '
  • &#34; untuk "
  • ...

Untuk lebih lanjut, Anda bisa melihat referensi entitas karakter dalam HTML .

Pascal MARTIN
sumber
39
Mengapa orang harus menggunakan tanda kutip ganda untuk nilai atribut?
Gumbo
5
@Pascal MARTIN: XML juga memungkinkan tanda kutip tunggal untuk nilai atribut. (Lihat w3.org/TR/xml/#NT-AttValue )
Gumbo
4
@ Gumbo: wooo! Saya tidak berpikir saya pernah melihat dokumen XML yang menggunakan nilai atribut arround tanda kutip tunggal; jadi saya tidak berpikir ini benar-benar valid; Saya hanya (sekali lagi) belajar sesuatu sambil menjawab pertanyaan; jadi, terima kasih atas komentarnya!
Pascal MARTIN
5
Saya tahu ini sudah tua, tapi saya pikir perlu dicatat bahwa ada entitas HTML untuk ":&quot;
daiscog
1
@Pascal, validator w3c menunjukkan tanda kutip tunggal valid untuk atribut. Dan lihat stackoverflow.com/questions/2210430/…
ChrisJJ
62

Anda dapat menggunakan &apos;(yang rapuh di IE) atau &#39;(yang seharusnya berfungsi di mana saja). Untuk daftar lengkap, lihat Referensi Karakter Dinamakan W3C HTML5 atau tabel entitas HTML di WebPlatform.org .

Benjamin Manns
sumber
Wow, sudah beberapa saat sejak saya menulis ini. Terima kasih telah menangkapnya - Saya telah memperbarui tautan ke dua tabel di W3C dan WebPlatform.org.
Benjamin Manns
Ini bekerja "di mana-mana" kecuali dalam atribut Ekspresi VXML <var> di mana melarikan diri lebih lanjut diperlukan karena dalam VXML <var> nilai variabel String ditunjukkan sebagai tanda kutip tunggal dalam tanda kutip ganda normal dari definisi atribut: <var name = "myvar" expr = "'hel \ & apos; lo'" />
Steve Cohen
9

Saat Anda berada dalam konteks HTML, Anda perlu menggunakan HTML untuk mewakili karakter itu. Dan untuk HTML Anda perlu menggunakan referensi karakter numerik &#39; ( &#x27;heksadesimal):

<input type='text' id='abc' value='hel&#39;lo'>
Gumbo
sumber
tapi aku tidak mengerti apa maksudmu context of html?
coding_idiot
@coding_idiot Lihat berbagai token yang mungkin dihadapi oleh parser HTML selama proses parsing . Setiap negara bagian memiliki aturan parsing berbeda yang dipicu berdasarkan input. Tidak setiap negara mengizinkan referensi karakter. Sekarang jika Anda melihat nilai atribut (satu kutip) , Anda dapat melihat bahwa a &menunjukkan awal referensi karakter.
Gumbo
7

Mewakili sebagai entitas teks (ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'>
AndiDog
sumber
6

Mungkin cara termudah:

<input type='text' id='abc' value="hel'lo">
road242
sumber
-1

Anda dapat mencoba menggunakan: &#145;

yang hilang
sumber
-1

menggunakan fungsi inbuild javascript melarikan diri dan menghapus

sebagai contoh

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

Ini akan sangat membantu jika Anda memiliki data string json yang besar untuk digunakan dalam atribut

Ram Bharlia
sumber
escapebukan unicode aman. Spesifikasi menyarankan agar tidak digunakan.
Quentin