2012-07-19 16 views
11

Sto provando qualcosa di semplice, solo per ottenere il valore del testo all'interno di un p:inputText pensato Javascript, ma non riesco a ottenerlo. Forse è una procedura diversa con Primefaces, poiché se non lo uso, non ho riscontrato il problema.Ottieni il valore del testo da p: inputText javascript

Il mio codice:

<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> 

ho provato anche con JQuery, ma anche senza successo.

vista resa:

<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

La tua domanda è anche 'tag jQuery', si vuole una soluzione in esso troppo? – Blaster

+0

'jQuery' funziona con l'HTML reso, quindi mettere il tuo template/lato server non è di grande aiuto. Pubblica alcuni dei sorgenti resi per favore. –

+0

risposta

12

Aggiungi id al <p:inputText

come questo

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

assicurarsi che il modulo ottenuto prependId="false"

di accedere al valore come questo

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

se non si desidera aggiungere prependId="false" al modulo si dovrà cambiare il selettore jquery da jQuery('#someID').val() a jQuery("[id$='someID']").val()


EDIT

dal modulo editlFrm

provare questo (assicuratevi di assegnare QualcheID id al p:inputText)

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

L'ho provato, mi restituisce undefined. –

+0

+1 per la modifica, ha senso vedere la fonte di rendering. –

+1

Mantiene la risposta undeterminata –

6

mi sono imbattuto in questa domanda quando si cerca di fare qualcosa di simile, e ha scoperto che primefaces espone elemento JQuery di un widget attraverso la proprietà jq.

Quindi nel tuo esempio, si può semplicemente fare:

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

Nelle versioni più recenti primefaces (dal 5,0), esportato i widget sembrano inquinare non è più il namespace globale, ma devono essere accessibili utilizzando il metodo PF(). L'elemento JQuery può comunque essere accessibile allo stesso modo.

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

Inoltre, c'è un modo semplice 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

mio penso modo più semplice:

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

È anche possibile impostare il valore del campo di input in questo modo:

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

altro modo:

PrimeFaces.widgets.youtlink.jq.val() 

e un altro modo se si dispone di ID:

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

testati con PF 5.3

Problemi correlati