更新:为了清晰起见,我在此处进行了更新,而不是在评论中撰写或回复帖子。
这是这些按钮在外观上运行的代码的一部分:
我制作了这样的按钮:
<h:commandButton value="Delete" onclick="return addBackspace();">
<f:ajax execute="@form" render="formula"/>
</h:commandButton> //the backspace button
textArea:
<h:inputTextarea id="formula" value="#{output.formula}" />
我制作了一些简单的按钮,将其值写入textArea,以便用户在构建时看到公式:
<h:commandButton value="+ " onclick="return checkButtons(this.value);">
<f:ajax execute="@form" render="formula"/>
</h:commandButton>
我不完全确定我放在那里的ajax部分,用它来阻止每次点击刷新页面。
我使用的selectBoxes现在有一些硬编码值,但最终将填充从WS获取的数据。
Property:
<h:selectOneMenu value ="#{output.propertyReferenceValue}" id="selectTwo" onchange="return checkItem(this.value);">
<f:selectItems value="#{property.propertyReference.keySet()}"/>
</h:selectOneMenu>
现在,如果我禁用textArea或readOnly,我仍然可以在其中写入selctBoxes的内容(这很好),但如果我尝试像“+”这样的简单按钮,它们的值就会快速出现,那么快就消失了。如果我尝试退格,它将删除textArea的整个内容,如果我将一些selectbox的内容放在textArea中然后如果我单击“+”按钮(例如),则整个内容区域将被删除。我仍在挖掘代码,看看是什么让它以这种方式运行:)
END OF UPDATE
是否有可能在JSF中创建一些commandButtons,它将在inputTextArea上运行,就像“Enter”和“Backspace”键一样?例如:
按下“输入按钮”,将光标移动到textArea的新行。 “退格按钮”将删除光标后面的下一个字母或空格。
我一直在寻找,但我似乎只找到了如何让所有文字消失的细节。
谢谢, 丹尼尔
答案 0 :(得分:1)
你可以使用JavaScript。
E.g。
<h:inputTextarea id="textarea" binding="#{textarea}" value="#{bean.text}" />
<input type="button" value="Enter" onclick="addEnter('#{textarea.clientId}')" />
<input type="button" value="Backspace" onclick="addBackspace('#{textarea.clientId}')" />
使用这些功能
function addEnter(textareaId) {
var textarea = document.getElementById(textareaId);
textarea.value += '\n';
textarea.focus();
}
function addBackspace(textareaId) {
var textarea = document.getElementById(textareaId);
textarea.value = textarea.value.substring(0, textarea.value.length - 1);
textarea.focus();
}