Wizard do Primefaces pula o tab sem validar campos

Criei uma função javascript para validar campos do formulário composto pelo componente <p:wizard> do Primefaces. A função é chamada através do evento onnext=""do <p:wizard>, ou seja, somente quando a pessoa clica em próximo (para ir para a próxima tab). O problema é que a minha função javascript ela não consegue fazer com que o <p:wizard> não pule a tab se as condições não forem satisfeitas.

function onnext() {
var nome = document.getElementById('nome');
var cpf = document.getElementById('cpf');

if (nome.value === '') {
    alert('Por favor preencha o campo nome');
    nome.focus;
    return false;
} else if (cpf.value === '') {
    alert('Por favor preencha o campo cpf');
    cpf.focus;
    return false;
}
return true;}

Creio eu que o problema está nesses return true e false… mas como não sei o que deveria retornar, peço ajuda aqui a vocês.

<p:wizard nextLabel="Próximo" onnext="onnext();" flowListener="#{alunoBean.onFlowProcess}">
    <p:tab title="Dados Pessoais">
        <p:panel header="Dados Pessoais">
           <p:messages />                              
           <h:panelGrid columns="2">
               <p:outputLabel value="Nome Completo: " for="nome" />
               <p:inputText id="nome" value="#{alunoBean.aluno.nome}" />

               <p:outputLabel for="cpf" value="CPF: "/>
               <p:inputText  id="cpf" value="#{alunoBean.aluno.cpf}" />
           </h:panelGrid>
        </p:panel>
     </p:tab>
     <p:tab title="Dados Bancários">        
     </p:tab>
     <p:tab title="Dados Familiares">        
     </p:tab>
</p:wizard>

Com esse javascript aí, se você não preencher os campos e clicar em próximo, ele mostra o alert(’’); e já pula pra próxima tab. A partir dai você só consegue voltar, não consegue pular pra próxima!