2015-11-15 3 views
0

Вид:Сброс значения поля из другого поля Primefaces

<p:selectOneMenu id="examId" value="#{examrequisitionsController.selected.examId}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_examId}"> 
    <f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" /> 
    <f:selectItems value="#{examsController.itemsAvailableSelectOne}" var="examIdItem" itemValue="#{examIdItem}"/> 
    <p:ajax listener="#{examrequisitionsController.getExamPrice()}" update="price" /> 
</p:selectOneMenu> 

<p:inputText id="price" widgetVar="widgetPrice" value="#{examrequisitionsController.selected.price}" title="#{bundle.CreateExamrequisitionsTitle_price}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_price}" readonly="#{facesContext.currentPhaseId.ordinal eq 6}" maxlength="7"> 
    <f:validator validatorId="decimalValidator" /> 
</p:inputText> 

Контроллер:

public void getExamPrice() { 
     EntityManager em = Persistence.createEntityManagerFactory("SystemCardiologyReportsPU").createEntityManager(); 
     Exams exam = (Exams) em.createNamedQuery("Exams.findById").setParameter("id", this.selected.getExamId().getId()).getSingleResult(); 
     this.selected.setPrice(exam == null ? null : exam.getPrice());   
} 

JavaScript:

$(document).on('change', '#ExamrequisitionsCreateForm\\:examId_input', function() { 
    if (this.value === '') 
     jQuery('#ExamrequisitionsCreateForm\\:price').val('');  
}); 

Я хочу сделать что-то, чтобы сбросить значение входа " цена ", если опция" Выбрать один "выбрана в поле examId.

Эта функция JS работает, но после того, как функция JS сбросит значение поля, тег ajax автоматически автоматически обновится до последнего действительного значения.

Было бы проще сделать это в контроллере, но ajax не будет в контроллере, когда я выберу первый вариант, вот почему я пытаюсь с JS.

Или любая функция, которая отключает «Выбрать один» после того, как пользователь выберет любую другую опцию с помощью JS.

Я пытался что-то вроде:

$('select [value=""]').attr('style', 'display:none');

+0

Любые обновления по этой проблеме? –

ответ

0

я предполагаю examId является внутр. Так что вы можете, пожалуйста, удалите

<f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" /> 

И добавить

<f:selectItem itemLabel="Select One" itemValue="0" noSelectionOption="true" /> 

Я думаю, что нулевой преобразователь не работает, как ваше значение selectOneMenu является ИНТ и не может понять нуль. Вы можете удалить скрипт js.

+0

Привет, спасибо за ваш ответ. Нет, экзамен не является int, является объектом экзамена (эта номенклатура из-за базы данных). Во всяком случае, я решил проблему, используя '', поэтому нет возможности снова выбрать этот параметр. – developer033

+1

Отлично. В следующий раз вы сможете изучить jsf-конвертер для экзамена. –

Смежные вопросы