Пустая проверка jQuery для простых компонентов

0

Мне интересно, как проверить jQuery, если есть какие-то поля пустые. Если да, я покажу диалог.

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

$('input:text').each(function( index ) {    
    if( $(this).val().length == 0){ 
         ...
    } 
});

К сожалению, я видел, что, например, для <p:selectOneMenu> значение всегда "", или как насчет p:selectOneRadio?

Теги:
primefaces

2 ответа

1

Каждый компонент в 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. И онлайн-демо.

Надеюсь это поможет.

  • 0
    а что, например, <h: SelectOneMenu>?
  • 0
    <h:selectOneMenu> - это обычный выбор HTML, поэтому $('select').val() != '' сделает это. но это должно быть сделано за пределами for, это совершенно другой способ проверки.
Показать ещё 1 комментарий
0

Может быть, что-то вроде этого:

$('input:text').each(function( index ) {    
     if( $(this).val().length == 0 || $.trim($(this).val()) == ""){ 
         alert("empty");
     } 
});
  • 0
    Я получил selectOneMenu с выбранным элементом, когда я использую на нем $ (this) .val (). Length == 0 это правда. Я не знаю, почему я всегда получаю "" в selectOneMenu

Ещё вопросы

Сообщество Overcoder
Наверх
Меню