drupal7エスケープをさせない

Events happening in the community are now at Drupal community events on www.drupal.org.
390831's picture

drupal7でモジュールを作成しています。

以下のようにtextfieldの属性にonKeyUpイベントを追加しました。

$jsarg = "AjaxZip2.zip2addr(this,'pref','addr');";

$form = array();
$form['zip'] = array(
'#type' => 'textfield',
'#size' => 9,
'#maxlength' => 7,
'#required' => TRUE,
'#attributes' => array('onKeyUp' => $jsarg),

);

HTMLを出力させたところ、「'」→「'」とシングルコートがエスケープされてしまいました。
エスケープさせないようにするにはどのようにしたらよいのでしょうか?

*出力されたHTML
onKeyUp="AjaxZip2.zip2addr(this,'pref','addr');"

onKeyUp="AjaxZip2.zip2addr(this,'pref','addr';);"
でエスケープさせずに出力したい。

宜しくお願いします。

Comments

多分無理です

mattz's picture

ソースを読んでみましたが、#attributesに渡した値をdrupal_attributes関数で出力文字列に変換しますが、drupal_attributesの中で更にcheck_plain関数を通しています。
この問題で最終的に達成したい目標は「エスケープさせないで出力する」ではなく、「特定のinputフィールドのkeyupイベントで、AjaxZip2.zip2addrを実行する」ですので、回避方法としては、JavaScript側で

    $('#edit-zip').bind('keyup', function(){
      var elem = document.getElementById('edit-zip');
      AjaxZip2.zip2addr(elem,'pref','addr';);
    });

みたいな感じでしょうか。
// この通りに書いてちゃんと動くかどうかは、保証しません。
// もうちょっとスマートに書けそうな気もしますが。

ありがとうございました

390831's picture

ご提案内容でJavaScript側で実装したところ旨く動作しました。
ありがとうございました。