以下のようにonclickからJavaScriptの関数をコールする場合は、「'」はエスケープ(\')しないと引数として渡せない。
以下で、確認しました。ただしIE6のみ確認。
<html> <body> <form name="FM"> <input type="text" name="IP" value="ケース1:反応あり" onclick="subx('cb\'b"\\bc')"> <input type="text" name="IP" value="ケース2:反応なし" onclick="subx('cb'b"\\bc')"> <input type="text" name="IP" value="ケース3:反応なし" onclick="subx('cb'b"\\bc')"> </form> <script> function subx(a){ alert(a); } </script> </body> </html>
ケース2とケース3は同じように無反応になります。
たぶん、&#39;は「'」と解釈されていると思われます。
このような場合は、「\'」にするとonclickが反応します。
あと、ダブルクォートのエスケープについては。
JavaScriptのロジックの文字列で、文字としての「\」を記述するときは、エスケープして「\\」となります。
これをCGIから標準出力する場合、Perlでのダブルクォート文字列では、Perlでのエスケープが加わって「\\\\」となります。