2010-09-28 27 views
9

Tengo dos botones: btnAdd y btnUpdate. He escrito una función de jQuery para el botón btnUpdate para validar algunos campos de la página web como:misma función para dos botones en jQuery

$(function() { 

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

quiero hacer lo mismo cuando se hace clic en btnAdd. Así que tengo que escribir la misma función nuevamente para btnAdd. ¿Hay alguna otra forma de evitar esto?

(Si escribo una función javascript y llamar la misma función en el evento de clic de botón de los dos botones, que está bien. Pero ¿hay alguna manera con jQuery?)

Respuesta

17

Simplemente haga una selección de dos botones, separados por una coma: ("#add, #update").click... Se parece a esto en su código:

$(function() { 

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

que lo menciones Refactoring es un gran paso en el desarrollo. – balexandre

7

Hay dos maneras.

(1) Seleccionar ambos elementos a la vez y aplicar el controlador de eventos para ellos:

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

(2) Dar la función de un nombre, en lugar de dejar en el anonimato:

function clickHandler() { 
    // code here 
} 

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

jQuery es un marco de JavaScript, no otro idioma, por lo que puede escribir una función de JavaScript aquí también.

function validateFields(e) { 
    code here; 
} 

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

Llamamos a este Refactoring y es algo que le ayudará a todo el camino, leer más sobre, invertir en ti mismo y comprar el fantástico y único Refactoring book

en su caso, debe hacer esto:

$(function() { 

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

}); 

function validate(myButton) 
{ 
    // code here 
} 

Como debe hacer siempre.

sino como jQuery que puede tener selectores con múltiples entradas, por lo que todo lo que necesita hacer es:

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