2012-02-04 8 views
5

Ho creato un campo di ricerca (id: searchField) e un pulsante di ricerca (id: searchButton) utilizzando i controlli personalizzati Xpages. Ho aggiunto un evento onkeypress nel campo di ricerca in modo tale da attivare un clic sul pulsante search. Il searchButton quindi ricaricherà la pagina ma con i parametri url provenienti dal campo di ricerca. Il problema è che la pagina si ricarica ma i parametri di ricerca non vengono aggiunti all'URL quando si preme INVIO nel campo di ricerca, ma funziona correttamente quando si preme searchButton. Qui ci sono i codici che ho usato:XPages - evento onkeypress che non attiva correttamente il clic

(codice aggiunto alla onkeypress di Campo di ricerca)

 
if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } 
if (thisEvent.keyCode == 13) 
{ 
    document.getElementById("#{id:searchButton}").click(); 
} 

(codice aggiunto al onclick di SearchButton)

 
window.location.href = "test.xsp?search=" + document.getElementById("#{id:searchField}").value; 

ho provato in IE e Firefox, entrambi hanno problemi. Ho creato un file HTML di esempio e ha funzionato correttamente. È un errore di XPage o mi manca qualcosa qui?

risposta

7

Aggiungere questo dopo la tua '.Click()':

 thisEvent.preventDefault(); 
     thisEvent.stopPropagation(); 

Si dovrebbe risolvere il problema ;-)

+0

Sì, questo è corretto - il problema si trova nella pressione del tasto invio è in corso per inviare il modulo al server - il reindirizzamento della pagina non può avvenire in quel punto. –

0

ho fatto questo solo di recente in un XPage, e il seguente script funziona per me cross-browser:

var e = arguments[0] || window.event; 
if (e.keyCode==13 || e.which==13) { 
    window.location.href = 'searchResults.xsp?query=' + 
     encodeURI(dojo.byId('#{id:searchInput}').value)); 
    return false; 
} 

Spero che questo aiuti,

Jeremy

+0

Grazie per la risposta. Ma penso che la mia domanda riguardi l'evento onkeypress che attiva il clic del pulsante, ma non esegue il ricaricamento (con parametri URL) correttamente. – Jairo

+0

Ok, non sono ancora sicuro di cosa stai chiedendo: non attiva lo script o non ricarica la pagina? –

+0

in realtà ciò che è strano è che fa scattare il clic sul pulsante, ma l'evento sul pulsante non viene eseguito (il ricaricamento/reindirizzamento). L'evento di reindirizzamento funziona solo quando si fa clic manualmente sul pulsante.:( – Jairo

6

Modifica dell'evento onkeypress del campo di input per

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } 
if (thisEvent.keyCode == dojo.keys.ENTER) 
{ 
    dojo.byId("#{id:searchButton}").click(); 
    thisEvent.preventDefault(); 
} 

dovrebbe essere sufficiente per risolvere il problema. Si noti che per la compatibilità cross browser Ho usato il

dojo.keys.ENTER 

e

dojo.byId("id"); 

proprietà/metodo. Il dojo.keys oggetto ha molto di più oggetti da verificare la presenza di alcuni tasti premuti: vedi here

Mark

0

problema è lì con l'id, generato da XPage. Ho avuto lo stesso problema. xPages ha come prefisso l'id del controllo personalizzato come visualizzazione: _id1: _id ... Prova fornendo l'ID completo

Problemi correlati