Как проверить в JS, если значение p:calendar пусто?

У меня такая проблема - мне нужно проверить на своей странице JSF/PrimeFaces, если p:calendar значение (вводится пользователем с клавиатуры) пусто и, если это так, очистить сообщение об ошибке

это мой фрагмент календаря JSF

 <div class="item">
    <p:outputLabel id="l_dateBirth" for="dateBirth" value="#{msgs['customerForm.dateBirth']}"/>
    <p:calendar id="dateBirth" widgetVar="dateBirthVar" value="#{customerBean.customer.dateOfBirth}"
                placeholder="MM/dd/yyyy"
                showOn="button" navigator="true"
                pattern="MM/dd/yyyy" yearRange="-120:+0"
                mindate="#{dateBean.minDate}" 
                maxdate="#{dateBean.maxDateOfBirth}"
                required="true" 
                requiredMessage="#{msgs['Error.dateBirth.mandatory']}"
                disabled="#{customerBean.mode eq 'EDIT'}">
                <f:ajax execute="@this" event="dateSelect" render="m_dateBirth" />
                <p:ajax event="keyup" oncomplete="hideCustomerCalendarErrMsg('dateBirth')" />
                <f:validator binding="#{dateOfBirthValidator}"/>
                </p:calendar><p:message id="m_dateBirth" for="dateBirth" display="text"/>
</div>

это мой фрагмент JS

function hideCustomerCalendarErrMsg(variable) {
    var inputField, msg;
    inputField = PF('dateBirthVar').getDate();
    msg = document.getElementById("createEditCustomerForm:accordion:m_" +variable);
    if (inputField.value === null) {
        msg.innerHTML = "";
    }
}

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

1 ответ

Решение

Вместо вызова getDate(), попробуйте проверить сам ввод на наличие пустого значения.

function hideCustomerCalendarErrMsg(variable) {
   var inputField, msg;
   inputField = PF('dateBirthVar').input;
   msg = document.getElementById("createEditCustomerForm:accordion:m_" + variable);
   if (inputField.val() === "") {
       msg.innerHTML = "";
    }
}

Или вы все еще можете иметь свой код как есть, но вместо

if (inputField.value === null)

Пойти на

if (inputField === null)
Другие вопросы по тегам