如果p:日历值为空,如何检入JS?

时间:2017-06-30 09:53:02

标签: javascript jsf primefaces

我遇到了这样的问题 - 如果p:calendar值(由用户使用键盘输入)为空,我需要检查我的JSF / PrimeFaces页面是否为空,如果是,则清除错误消息

这是我的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 个答案:

答案 0 :(得分:2)

不要调用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)