Frage

Ich habe JSF Code wie:

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

Ich möchte dieses Element von JavaScript nach ID (from) bekommen, aber ich kann nicht, weil in generierten HTML es j_idt8:from ist

Wie kann ich dieses Element in z.B. jQuery? Gibt es eine Möglichkeit JSF2 nicht zu ändern ids zu zwingen?

War es hilfreich?

Lösung

Sie können entweder eine benutzerdefinierte Klasse verwenden, die Sie nur auf dieses Element und die Verwendung CSS-Selektoren zuweisen oder ein id Form zuweisen und das Element mit der ID formid:from erhalten.

Andere Tipps

  

Gibt es eine Möglichkeit JSF2 nicht zu ändern ids zu zwingen?

Sie können in generierten HTML prependId="false" Auf diese Weise erhält es sein aus anstelle von j_idt8. Von

prependId: Flag, das anzeigt, ob oder nicht, sollten diese Form prepend  seine ID zu seinem Nachkommen von id während der clientId Generation  verarbeiten. Wenn dieser Flag nicht gesetzt ist, ist der Standardwert true.

  

Wie kann ich dieses Element in z.B. jQuery?

Sie können ancestorComponent:from in jQuery verwenden dieses Element zu erhalten.

Eigentlich j_idt8 in j_idt8: von ist automatisch generierten ID der Ahnen Komponente Ihres <h:inputText/>

zum Beispiel

<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>

Jetzt erzeugt id von Eingabetext wäre Form: von

Wenn Sie bieten keine ID an eine Komponente als Ihr Browser erzeugt, die dynamisch. Also vergessen Sie nicht ids Komponenten.

In JSF 1.2 können Sie forceId = "true" verwenden. Ich bin mir nicht sicher, ob Sie t verwenden: Eingang in JSF 2, aber Sie sollten in der Lage sein. Dann IDs es in HTML sein wird, was Sie erwarten.

Um die vollständige ID für eine Komponente zu erreichen, verwenden EL implizite Objekte und deren Eigenschaften wie #{cc.clientId} und #{component.clientId}. Quelle: Acquire vollständigen Präfix für eine Komponente clientId in Container mit JSF 2.0 benennen.

Sie können mit jquery. Einfach, einen Selektor definiert den Text verwenden soll es enthält. So etwas wie folgt aus:

$( "input[name*='from']" )

'* =' verwendet wird, zu sagen, dass der Name Attribut einige Zeichenfolge enthält. Auch gibt es '~ =' mit ähnlicher Bedeutung.

Für detaillierte Erläuterungen und Beispiele finden Sie http://api.jquery.com/attribute-contains -selector /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top