Мне интересно, как проверить jQuery, если есть какие-то поля пустые. Если да, я покажу диалог.
Я пытался что-то вроде:
$('input:text').each(function( index ) {
if( $(this).val().length == 0){
...
}
});
К сожалению, я видел, что, например, для <p:selectOneMenu>
значение всегда ""
, или как насчет p:selectOneRadio
?
Каждый компонент в PrimeFaces имеет свой собственный способ проверить, пусто ли это значение или нет.
Принимая это во внимание, я опубликую, как проверить пустые значения в inputText, selectOneMenu, selectOneRadio в "почти" общем виде.
for (var propertyName in PrimeFaces.widgets) {
if (PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.InputText) {
if(PrimeFaces.widgets[propertyName].jq.val().length == 0) {
PrimeFaces.widgets[propertyName].jq.css('background', 'red')
}
} else if(PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.SelectOneRadio) {
if(PrimeFaces.widgets[propertyName].checkedRadio.length == 0){
PrimeFaces.widgets[propertyName].jq.css('background', 'red')
}
} else if(PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.SelectOneMenu) {
if(PrimeFaces.widgets[propertyName].getSelectedValue() == '') {
PrimeFaces.widgets[propertyName].jq.parent().css('background', 'red')
}
}
}
В основном мы перебираем виджеты PrimeFaces, которые у нас есть на странице, и определяем способ проверки значения на основе типа компонента.
Теперь, чтобы расширить это, вам нужно написать каждый индивидуальный способ проверки.
Небольшой рабочий пример можно найти на github. И онлайн-демо.
Надеюсь это поможет.
Может быть, что-то вроде этого:
$('input:text').each(function( index ) {
if( $(this).val().length == 0 || $.trim($(this).val()) == ""){
alert("empty");
}
});
<h:selectOneMenu>
- это обычный выбор HTML, поэтому$('select').val() != ''
сделает это. но это должно быть сделано за пределами for, это совершенно другой способ проверки.