Ho una combinazione nella mia applicazione extjs e voglio mostrare 'Sei sicuro di ?' confermare la finestra all'utente e impedire la modifica se l'utente ha detto di no.Come posso ottenere conferma utente su evento cambio combo in ExtJs?
Poiché la casella di conferma di JavaScript è sincrona, funziona correttamente. Ma usando Ext JS, viene mostrato il messaggio di conferma, e il resto del mio codice verrebbe eseguito prima che l'utente risponda. Ecco il mio codice:
// JavaScript confirm box
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
if(confirm('Are you sure ?') == false)
{
return false; // prevent combo from changing
}
// else continue
}
}
}
// Ext JS message box (to confirm)
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
Ext.Msg.show({
title: 'Warning',
msg: 'Are You Sure ?',
buttons: Ext.Msg.YESNO,
fn: function(btn) {
if (btn == 'yes') {
// continue and set new value on combo
}
else if (btn == 'no') {
// prevent combo from changing
}
}
});
}
}
}
Il problema è la Ext.Msg.show
ottiene una funzione di callback e non è in attesa di risposta degli utenti e non siamo in grado di prevenire combobox che cambia.
Cosa devo fare?
non funziona, perché in beforeselect non conosciamo ancora il nuovo valore selezionato! –
Pensa e rispondi allo –
Sai che il valore selezionato in 'beforeselect' è il secondo argomento (record nella risposta del ragazzo sopra). Per ottenere il valore puoi usare 'record.get ([il campo del valore combo]);' – Geronimo