JQueryからスピナーコンポーネントの上下ボタンのonclickイベントをキャプチャするにはどうすればよいですか?
次のコードを使用して、関連するテキスト フィールドの onchange をキャプチャできますが、上下のスピナー ボタンがイベントをトリガーしません。
Spinner<Integer> psbBudget = new Spinner<>("psbBudget", new PropertyModel(psb,"psbBudget"), Integer.class);
psbBudget.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget art) {
Integer inputS = (Integer) getFormComponent().getConvertedInput();
BigDecimal spinnerTime = BigDecimal.valueOf(inputS);
unallocatedTimeMap.put(psb, unallocatedTimeMap.get(psb).subtract(spinnerTime));
art.add(budgetListViewContainer);
}
});
listItem.add(psbBudget);
li.add(new Label("remainingBudgetLabel", new Model(unallocatedTimeMap.get(psb))));
予算項目の数が可変であるため、このスピナーは ListView に含まれています。テキスト フィールド内で行われた変更を反映するために、remainingBudgetLabel を取得していますが、スピナー ボタンを使用して行われた変更は反映されていません。
次の行を使用して、独自の JavaScript を挿入することを検討し始めました。
// behavior to capture changes made using spinner buttons (doesn't work!!!)
add(new Behavior() {
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(OnDomReadyHeaderItem.forScript("$('.ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default ui-button-text-only').click(function() {$(this).siblings('input').change();})"));
}
});
宣言された html の関連セクションは次のとおりです。
<table>
<tr>
<td/>
<th>Budget</th>
<th>Remaining</th>
</tr>
<tr wicket:id="budgetListView">
<th wicket:id="budgetLabel">Budget
</th><td><input wicket:id="psbBudget" type="text" style="width:3em" maxLength="2"/>
</td><td wicket:id="remainingBudgetLabel"/>
</tr>
</table>
したがって、これは 2 つの部分からなる質問だと思います: 1 - この JavaScript インジェクションが機能する見込みはありますか (私は JavaScript で足を濡らしているだけです)、または Wicket 内でこれをより正しく行う方法はありますか? 2 - JavaScript が唯一の方法である場合、生成された jquery の id 属性を制御できない場合、どのように要素を正しく見つけることができますか (または、何らかの方法で制御できますか?)。
wicket 6.6.0 で wicket-jquery-ui 6.2.1 ライブラリを使用しています。ありがとうございました。
編集
以前に投稿した生成された html (現在は削除されています) は、右クリックして viewSource を選択したものですが、jquery から実際に生成された html は表示されません。IE9 の F12 開発者ツールのスクリーンショットについては、以下を参照してください。スピナー用に生成された HTML には、元のタグとスピナー ボタン用に<input>
生成された 2 つのタグが含まれています。<a>