jqtransform.jsのonchangeの仕方、valueの変え方

お仕事で、jqtransform.jsが使われてるselectタグと戯れた際のメモ

jqtransform.jsの概要

概要はこちらでご一読。JavaScriptでHTMLフォームの劇的ビフォアアフター「Jqtransform」

既存のフォームをきれいなUIに変えるjqueryプラグインて感じですかね。

大まかな動きとしては、既存フォームのhtmlを取り込んで、別htmlに書き出しているようです。

プルダウン(selectタグ)の仕組み

書き出されるhtmlを見て分かったのですが、既存のselectタグを隠して、ul,li,aタグに書き換えてました。

なので、onchangeイベントが発火しません。selectタグではないので。

プルダウンがこんな感じのhtmlに変わってます。


- [なし](#)

- [0g~10g](#)

- [11g~30g](#)

- [31g~35g](#)

- [36g~40g](#)

- [41g~50g](#)

・・・
onchangeイベントを取得する方法

検索して出る答えはここ。つまり、aタグまでアクセスして、clickイベントを拾ってしまおうというもの。

導入してみた

実際導入してみたけど、、、、動かなーい。

$("#selecttag div.jqTransformSelectWrapper ul li a").click(function(){
    // やりたいことを素直に書く
});

で、よくよく考えると、このhtmlはjqueryftransformに書き出されている訳だから、、、そうか、htmlロード時点では存在しないんだな、ということで、ロードされた後(正確にはjqueryftransformでhtml書き出された後)動作するように、ready()で囲んでみました。

$(document).ready(function(){
    $("#selecttag div.jqTransformSelectWrapper ul li a").click(function(){
      // やりたいことを素直に信じて書く
    });
});

これで無事解決。

あれ、valueの変え方は?

で、valueの変え方ですが、選択された”見た目”の部分は、spanタグの中にあったので、

$("#selecttag div.jqTransformSelectWrapper span").text("mitamevalue");

これでOK。で、実際に”送信される”valueはjqueryftransformによって隠されたselectタグにセットしてやれば解決

$("#selecttag select.jqTransformHidden").val("postvalue");

以上!