制作JSF按钮,其作用类似于“Backspace”和“Enter”键,用于inputTextArea?

时间:2011-10-20 09:15:03

标签: java jsf-2

更新:为了清晰起见,我在此处进行了更新,而不是在评论中撰写或回复帖子。

这是这些按钮在外观上运行的代码的一部分:

我制作了这样的按钮:

  <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的新行。 “退格按钮”将删除光标后面的下一个字母或空格。

我一直在寻找,但我似乎只找到了如何让所有文字消失的细节。

谢谢, 丹尼尔

1 个答案:

答案 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();
}