2010-09-28 14 views
9

Mam dwa przyciski: btnAdd i btnUpdate. Pisałem funkcję jquery dla przycisku btnUpdate do sprawdzania niektórych pól na stronie internetowej, takich jak:ta sama funkcja dla dwóch przycisków w jQuery

$(function() { 

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

chcę zrobić to samo, gdy btnAdd kliknięciu. Muszę więc ponownie napisać tę samą funkcję dla btnAdd. Czy istnieje inny sposób uniknięcia tego?

(Jeśli piszę jedną funkcji javascript i wywołać tę samą funkcję w przypadku kliknięcia przycisku obu przycisków, to jest w porządku. Ale czy jest jakiś sposób, przy użyciu jQuery?)

Odpowiedz

17

prostu zrobić wybór dwóch przycisków, oddzielonych przecinkami: ("#add, #update").click... Wygląda to tak: Twój kod:

$(function() { 

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

należy wspomnieć, że Refaktoryzacja to ogromny krok w rozwoju. – balexandre

7

Istnieją dwa sposoby.

(1) Zaznacz oba elementy na raz i stosuje procedurę obsługi zdarzeń do nich:

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

(2) Podać funkcję nazwy, zamiast zostawiać anonimowy:

function clickHandler() { 
    // code here 
} 

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

jQuery to framework JavaScript, a nie inny język, więc możesz tutaj napisać jedną funkcję JavaScript.

function validateFields(e) { 
    code here; 
} 

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

Nazywamy to Refactoring i to jest coś, co pomoże Ci całą drogę, przeczytaj więcej na temat, inwestować w siebie i kupić fantastyczny jeden i tylko Refactoring book

w przypadku, należy to zrobić:

$(function() { 

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

}); 

function validate(myButton) 
{ 
    // code here 
} 

Jak zawsze powinien zrobić.

ale jak można mieć jQuery selektorów z wieloma wejściami, więc wszystko co musisz zrobić to:

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