2012-07-19 213 views
11

Estoy intentando algo simple, solo para obtener el valor de texto dentro de un p:inputText pensamiento Javascript, pero no lo estoy obteniendo. Quizás sea un procedimiento diferente con Primefaces, ya que si no uso eso, no encuentro el problema.Obtener texto de valor de p: inputText javascript

Mi código:

<p:inputText value="any text" widgetVar="youtlink" ></p:inputText> 
     <p:commandButton value="Search" onclick="loadPlayer();" icon="ui-icon-search" /> 


<script type="text/javascript"> 
    function loadPlayer() { 
     alert(youtlink.text); 
    } 
</script> 

He tratado también con jQuery, pero también sin éxito.

vista prestados:

<form id="editlFrm" enctype="application/x-www-form-urlencoded" method="post" 
name="editlFrm"> 
    <input id="editlFrm:j_id_7" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all" 
    type="text" value="assd" name="editlFrm:j_id_7" role="textbox" aria-disabled="false" 
    aria-readonly="false" aria-multiline="false"> 
    <button id="editlFrm:j_id_8" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left" 
    type="submit" onclick="loadPlayer();;PrimeFaces.ab({source:'editlFrm:j_id_8'});return false;" 
    name="editlFrm:j_id_8" role="button" aria-disabled="false"> 
+0

Su pregunta también ha etiqueta 'jQuery', que desea la solución en ella también? – Blaster

+0

'jQuery' funciona con el HTML renderizado, por lo que poner su plantilla/servidor no ayuda. Publica algo de la fuente representada por favor. –

+0

Respuesta

12

Añadir id a su <p:inputText

como esto

<p:inputText id="someID" value="any text" widgetVar="youtlink" ></p:inputText> 

asegúrese de que su forma tiene prependId="false"

de acceder al valor como esto

alert(jQuery('#someID').val()); 

si no desea agregar prependId="false" a su formulario, tendrá que cambiar el selector de jQuery a partir jQuery('#someID').val() a jQuery("[id$='someID']").val()


EDITAR

desde su formulario llamado editlFrm

probar esto (asegúrese de asignar someID ID a su p:inputText)

alert(jQuery('#editlFrm\\:someID').val()); 
+1

Lo he intentado, me devuelve indefinido. –

+0

+1 para la edición, tiene sentido ver la fuente representada. –

+1

Sigue volviendo indefinido –

6

me encontré con esta pregunta cuando se trata de hacer algo similar, y descubrí que PrimeFaces expone elemento de jQuery de un widget a través de la propiedad jq.

Así que en su ejemplo, usted podría simplemente hacer:

function loadPlayer() { 
    alert(youtlink.jq.val()); 
} 

En las versiones más recientes PrimeFaces (desde 5,0), exportan los widgets parecen ya no contaminar el espacio de nombres global, pero necesitan ser visitada usando el método PF(). Sin embargo, se puede acceder al elemento JQuery de la misma manera.

function loadPlayer() { 
    alert(PF('youtlink').jq.val()); 
} 
0

Además, hay una forma sencilla con javascript:

<h:form id="yourID" > 
    <p:inputText id="anyID" value="any text" widgetVar="youtlink" ></p:inputText> 
</h:form> 

function loadPlayer() { 
    alert(document.getElementById('yourID:anyID').value); 
} 
1

Mi Creo forma más sencilla:

PF('youtlink').jq.val(); 

Usted puede incluso fijar el valor del campo de entrada de la siguiente manera:

PF('youtlink').jq.val('new value'); 

otra manera:

PrimeFaces.widgets.youtlink.jq.val() 

y otra manera si usted tiene ID:

$(PrimeFaces.escapeClientId("yourFormID:youtlink")).val() 

probado con PF 5.3

Cuestiones relacionadas