2010-09-28 13 views
9

Ho due pulsanti: btnAdd e btnUpdate. Ho scritto una funzione jquery pulsante btnUpdate per convalidare alcuni campi nella pagina web come:stessa funzione per due pulsanti in jQuery

$(function() { 

    $('#<%=btnUpdate.ClientID %>').click(function() { 
    code here 
    }); 
}); 

voglio fare la stessa cosa quando btnAdd viene cliccato. Quindi devo scrivere di nuovo la stessa funzione per btnAdd. C'è un altro modo per evitare questo?

(Se scrivo una funzione javascript e chiamare la stessa funzione in caso pulsante di scatto di entrambi i pulsanti, va bene. Ma esiste un modo utilizzando jQuery?)

risposta

17

Basta fare una selezione di due pulsanti, separati da una virgola: ("#add, #update").click... Sembra nel codice:

$(function() { 

    $('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
    code here 
    }); 
}); 
+0

si dovrebbe menzionare che refactoring è un enorme passo in via di sviluppo. – balexandre

7

Ci sono due modi.

(1) Selezionare entrambi gli elementi in una sola volta e applicare il gestore di eventi a loro:

$(function() { 
    $('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
     code here 
    }); 
}); 

(2) Dare la funzione di un nome, piuttosto che lasciare anonimo:

function clickHandler() { 
    // code here 
} 

$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(clickHandler); 
0

jQuery è un framework JavaScript, non un'altra lingua, quindi è possibile scrivere anche qui una funzione JavaScript.

function validateFields(e) { 
    code here; 
} 

$(function() { 
    $('#<%=btnUpdate.ClientID %>').click(validateFields); 
    $('#<%=btnAdd.ClientID %>').click(validateFields); 
}); 
6

Noi chiamiamo questo Refactoring ed è qualcosa che vi aiuterà a tutto il senso, saperne di più, investire in te stesso e acquistare il fantastico unico e solo Refactoring book

nel tuo caso, è dovrebbe fare questo:

$(function() { 

    $('#<%=btnUpdate.ClientID %>').click(function() { 
     validate($this); 
    }); 
    $('#<%=btnAdd.ClientID %>').click(function() { 
     validate($this); 
    });  

}); 

function validate(myButton) 
{ 
    // code here 
} 

Come si dovrebbe sempre fare .

ma come jQuery si può avere selettori con ingressi multipli, quindi tutto quello che dovete fare è:

$('#<%=btnUpdate.ClientID %>, #<%=btnAdd.ClientID %>').click(function() { 
    validate($this); 
} 
Problemi correlati