Создание кнопок JSF, которые действуют как клавиши «Backspace» и «Enter» для inputTextArea? - PullRequest
1 голос
/ 20 октября 2011

ОБНОВЛЕНИЕ: Я обновил здесь для ясности, вместо того, чтобы писать в комментариях или делать ответное сообщение.

Это пример того, как код, с которым будут работать эти кнопки:

Я сделал такие кнопки:

  <h:commandButton value="Delete"  onclick="return addBackspace();">
                    <f:ajax execute="@form" render="formula"/>
                </h:commandButton> //the backspace button

Текст области:

 <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, которую я там вставил, использовал ее, чтобы остановить обновление страницы при каждом клике.

И я использую selectBox, которые сейчас имеют некоторые жестко закодированные значения, но в конечном итоге будут заполнены данными, взятыми из 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, то же самое, если я поместу часть содержимого полей выбора в textArea, а затем, если я нажму кнопку «+» (например), все содержимое область будет удалена. Я все еще копаюсь в коде, чтобы понять, что же заставляет его так себя вести:)

КОНЕЦ ОБНОВЛЕНИЯ

Можно ли создать несколько командных кнопок в JSF, которые будут работать с inputTextArea, подобно клавишам "Enter" и "Backspace"? Например:

«Кнопка ввода» при нажатии перемещает курсор на новую строку текстовой области. «Кнопка возврата» удалит следующую букву или пробел, находящийся за курсором.

Я долго искал, но мне кажется, что я нашел только подробности о том, как заставить весь текст исчезнуть.

Спасибо, Daniel

1 Ответ

1 голос
/ 20 октября 2011

Вы можете просто использовать JavaScript для этого.

* 1003 Е.Г. *

<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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...