基本上我想要实现的是最多2个,最小值1个。
所以我的xhtml如下所示:
<p:outputLabel for="max" value="Maximum Occurance: " />
<p:spinner id='max' min="1" maxlength="3" size="3" value="#{ObjectDefinitionBean.max}" />
<p:outputLabel for="min" value="Minimum Occurance: " />
<p:spinner id='min' min="0" maxlength="3" size="3" value="#{ObjectDefinitionBean.min}" />
然后我加入了javascript,它基本上检查了max&gt; min,如果没有,那么将最大值设置为新的最小值,而另一个则转向:
<script type="text/javascript" language="JavaScript">
//<![CDATA[
$("#ioDefCreation\\:max_input").change(function(){
var min = parseInt($("#ioDefCreation\\:min_input").val());
var max = parseInt($("#ioDefCreation\\:max_input").val());
if(min>max){
$("#ioDefCreation\\:min_input").val(max);
}
});
$("#ioDefCreation\\:min_input").change(function(){
var min = parseInt($("#ioDefCreation\\:min_input").val());
var max = parseInt($("#ioDefCreation\\:max_input").val());
if(max<min){
$("#ioDefCreation\\:max_input").val(min);
}
});
//]]>
</script>
到目前为止,除了一个令人满意的行为外,一切都是www 让我们说在开始时两个值都是0 我将最小值增加4(通过单击微调器的向上箭头) 现在最大值正确显示4。但是,如果我现在单击max的向上箭头,它将显示1(从其初始值0而不是使用javascript设置的值递增1)。这不仅限于初始值为0的情况。它会将min和max的值重置为通过javascript函数更改之前的值。
答案 0 :(得分:0)
这是因为在你的代码中,max的最小值是1.当你使用javascript将它设置为0时,primefaces接管控制并将其设置为最小指定值
<p:spinner id='max' !!!min="1"!!! maxlength="3" size="3" value="#{ObjectDefinitionBean.max}" />