JSF2 Primefaces Enter-Taste keycode=13 funktioniert nicht mit commandButton

Die eigentliche Frage: ich versuche zu verstehen, die Interaktion zwischen einem javascript-snippet habe ich gefunden und die Primefaces commandButton.
Die javascript-Codeausschnitt zugeordnet ist, die onkeypress-Attribut des JSF h:form-tag.
Ich habe dieses snippet funktioniert auf einigen meiner Seiten, jedoch nicht auf andere. Als ich versuchte, zu zerlegen die nicht-essentials zu Fragen, die Frage der javascript aufgehört zu arbeiten komplett.

Scheint es etwas zu sein, was ich nicht verstehe, da dieser code nicht funktioniert. Hinweis: der code funktioniert, wenn der Benutzer auf die Schaltfläche klickt. Ich will, dass es funktioniert, wenn Sie drücken Sie die Enter-Taste. Ich habe genommen, so viel wie ich kann und lobotomized Stil-Richtlinien um es kürzer zu machen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Tray Report</title>
        <h:outputStylesheet library="css" name="postalreports.css"  />
    </h:head>
    <h:body>
        <h:form id="thisform"  onkeypress="if (event.keyCode == 13) { document.getElementById('thisform:btn').click(); return false; }" > 
            <p:panel id="panel" header="Report For Days">  
                <p:messages id="messages" />  
                <p:inputText id ="days" value="#{trayBean.days}" >
                </p:inputText>
            </p:panel>
            <p:commandButton id="btn" value="RUN" actionListener="#{trayBean.run}"/>            
        </h:form>
    </h:body>
</html>
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class TrayBean implements Serializable {
    private Integer days = 1;
    public TrayBean() {}
    public void run() {
        System.out.println("do something here");
    }
    public Integer getDays() {  return days; }
    public void setDays(Integer days) { this.days = days; }
}

P. S. ich habe auch versucht if (event.keyCode == 13) { dieses.submit(); }

HINZUGEFÜGT, NACHDEM WEITERE FORSCHUNG:
Sehr zu meinem Leidwesen, ich habe eine Primefaces-spezifische Lösung für dieses, dass hätte ich auch früher finden. Es stellt sich heraus, dass entweder kein JavaScript benötigt wird an alle mit der einfachen addition der p:focus-tag. Hier ist die XHTML-Datei, die tatsächlich funktioniert. Es ist keine änderung der backing-bean.

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">

    <h:head>
        <title>Tray Report</title>
    </h:head>
    <h:body>
        <h:form id="thisform"> 
            <p:focus/>
            <p:panel id="panel" header="Report For Days">  
                <p:messages id="messages" />  
                <p:inputText id ="days" value="#{trayBean.days}" >
                </p:inputText>
            </p:panel>
            <p:commandButton id="btn" value="RUN" actionListener="#{trayBean.run}"/>            
        </h:form>
    </h:body>
</html>

Diese wird mir erlauben, um die Analyse durchzuführen von meinem ursprünglichen problem (da habe ich ein p:Fokus-tag auf Seiten, die nicht funktionieren noch), die werde ich separat.

InformationsquelleAutor Dean | 2013-07-25

Schreibe einen Kommentar