2017-02-14 9 views
0

Я использую функциональность, где, если ошибка проверки возникает, тогда ссылка goto генерирует идентификатор требуемого компонента с фокусом() в верхней части страницы. При щелчке по этой ссылке выделяется необходимый компонент. Теперь он работает, если ошибка находится на одной вкладке. Но первая вкладка - активная функция фокуса, не указывающая требуемое текстовое поле внутри третьей вкладки.javascript focus() не работает от tab1 до tab2 в простых элементах

void encodeGotoLabel(FacesContext context, UIComponent component, ResponseWriter writer, 
      FacesMessage msg) throws IOException { 
      String id = getid(context, msg); 
      if (id != null && !FacesMessage.SEVERITY_INFO.equals(msg.getSeverity()) 
       && !FacesMessage.SEVERITY_FATAL.equals(msg.getSeverity())) { 
       String inputLabel = findInputLabel(context, id); 

       if (inputLabel != null) { 
        ResourceBundle bundle ="bundle"; 

        writer.writeText(" (", null); 
        writer.writeText(bundle.getString("goTo") + " ", null); 
        writer.startElement("a", component); 
        writer.writeAttribute("href", "javascript:document.getElementById('" + id 
         + "').focus();", 
         null); 
        writer.writeText(inputLabel, null); 
        writer.endElement("a"); 
        writer.writeText(")", null); 
       } 
      } 
     } 
+0

Возможно, элемент id такой же, поэтому вы можете получить только первый элемент. – user1087079

+2

вопрос непонятен, что это именно то, что вам нужно? –

+0

Вы хотите переключиться на вкладку, где есть ошибка проверки? –

ответ

0

Эта функция петли на группу вкладок и проверьте, есть ли ошибка, если так переключиться на него и сосредоточиться на нужном поле, все, что вам нужно сделать, это добавить его в функции:

var tabs = PF('tabViewWv').getLength(); //tabViewWv is WidgetVar name 
for (var iter = 1; iter <= tabs ; iter++) { 
    if ($('#form\\:tabView\\:tab' + iter).find(':input').hasClass('ui-state-error')) { 
     PF('tabViewWv').select(iter - 1); 
     return false; 
    } 
}