抱歉,标题含糊不清。
基本上我想要实现的是有 2 个最大值,一个最小值。
所以我的 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>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>
到目前为止,除了奇怪的行为之外,一切都按预期进行: 假设一开始两个值都是 0 我将最小值增加 4(通过单击微调器的向上箭头) 现在最大值正确显示为 4。但是,如果我现在单击最大值的向上箭头,它将显示 1(从初始值 0 增加 1,而不是使用 javascript 设置的值)。这不限于初始值为 0 的情况。它会将 min 和 max 的值重置为通过 javascript 函数更改之前的值。
最佳答案
发生这种情况是因为在您的代码中 max 的最小值为 1。当您使用 javascript 将其设置为 0 时,primefaces 接管控制并将其设置为最小指定值
<p:spinner id='max' !!!min="1"!!! maxlength="3" size="3" value="#{ObjectDefinitionBean.max}" />
关于javascript - 使用 javascript 设置 primefaces spinner 的值时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370282/