Materializeを使用すると(元の質問のコメントから明らかになったように)、select要素はchange
イベントを発生させません。 jQuery change
イベントを聞いて、イベントハンドラでCustomEvent
を起動する必要があります。このよう
:
_suspendUpdate = false;
attached() {
$(this.option).material_select()
$(this.option).on('change', e => {
if (!this._suspendUpdate) {
let customEvent = new CustomEvent('change', {});
this._suspendUpdate = true;
this.option.dispatchEvent(customEvent);
this._suspendUpdate = false;
}
});
}
注:change
CustomEventもjQueryの無限ループが発生し、独自のchange
イベントを発生する原因となるので、suspendUpdate
「トリック」が必要とされています。
上記のスニペットのためのビューテンプレート:もちろん https://gist.run/?id=4e7dd11228407e765844570409d210bd
あなたは、あなたができるオーレリアとマテリアライズを使用している場合:ここで
<template>
<require from="materialize/dist/css/materialize.css"></require>
<div class="input-field col s12">
<select ref="option" value.bind="optionSelect">
<option value="" disabled selected>Choose your option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<p>Selected value: ${optionSelect}</p>
</div>
</template>
も、このアプローチを示していgist.runですまた、Materializeブリッジを使用してください:http://aurelia-ui-toolkits.github.io/demo-materialize/#/about
免責事項:私はAurelia Materializeブリッジの作成者の1人です。
jqueryセレクタは、(DOMレンダリング後の)コンポーネントの 'attached(){...}'イベントに対してのみ使用できます。 – JayDi
@JayDi申し訳ありませんが、あなたはjqueryセレクタを意味しますか? $( '#xx')のように。val()? – sibi
はい、そうです。同様に、$( '#dateStart')。datetimepicker({locale: 'ru'、形式: 'DD.MM.YYYY'}); – JayDi