まだ JSF 2.2 を使用していない場合は、JS setTimeout()
/を使用clearTimeout()
して onclick をタイムアウトし、もう一度クリックしたときに以前に設定したものをクリアできます。
例えば
<h:selectManyCheckbox ... styleClass="delayClick">
<f:selectItems ... />
<f:ajax ... />
</h:selectManyCheckbox>
基本的に(jQueryの助けも少し)
$(".delayClick input").each(function(index, input) {
var onclick = input.onclick;
input.onclick = null;
$(input).on("click", function(event) {
delay(function() { onclick.call(input, event); }, 1000);
});
});
var delay = (function() {
var timer = 0;
return function(callback, timeout) {
clearTimeout(timer);
timer = setTimeout(callback, timeout);
};
})();
すでに JSF 2.2 を使用している場合は、 のdelay
属性を設定します<f:ajax>
。
<h:selectManyCheckbox ...>
<f:selectItems ... />
<f:ajax ... delay="1000" />
</h:selectManyCheckbox>