我遇到了这样的问题 - 如果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 = "";
}
}
所以,请帮助我 - 它不起作用。如果用户清除日历字段
,我需要动态清除验证器错误消息答案 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)