2009-04-30 12 views
0

kombiniert Ich habe eine asp.net codebehind Seite, die mehrere Checkboxes zu Javascript Methoden verbindet. Ich möchte nur eine Javascript-Methode machen, um alle zu behandeln, da sie die gleiche Logik sind, wie würde ich das tun?Wie man ähnliche Javascriptmethoden zu einem

Code hinter Seite zu laden:

checkBoxShowPrices.Attributes.Add("onclick", "return checkBoxShowPrices_click(event);"); 

checkBoxShowInventory.Attributes.Add("onclick", "return checkBoxShowInventory_click(event);"); 

aspx Seite Javascript; offensichtlich sie alle das gleiche tun für die ihnen zugewiesenen Kontrollkästchen, aber ich bin dieses Denken kann ein Verfahren reduziert werden:

function checkBoxShowPrices_click(e) 
{ 

    if (_hasChanged) 

    { 

    confirm('All changes will be lost. Do you wish to continue?', function(arg) 

    { 

     if (arg.toUpperCase() == 'YES') 

     { 
     var checkBox = document.getElementById('<%=checkBoxShowPrices.UniqueID% 
>'); 
     checkBox.checked = !checkBox.checked; 

     eval("<%=base.GetPostBackEventReference(checkBoxShowPrices)%>"); 

     _hasChanged = false; 

     } 

    }); 

    return false; 

    } 

    else 

    { 

    eval("<%=base.GetPostBackEventReference(checkBoxShowPrices)%>"); 

    } 

} 



function checkBoxShowInventory_click(e) 

{ 

    if (_hasChanged) 

    { 

    confirm('All changes will be lost. Do you wish to continue?', function(arg) 

    { 

     if (arg.toUpperCase() == 'YES') 

     { 

     var checkBox = document.getElementById('<% 
=checkBoxShowInventory.UniqueID%>'); 

     checkBox.checked = !checkBox.checked; 

     eval("<%=base.GetPostBackEventReference(checkBoxShowInventory)%>"); 

     _hasChanged = false; 

     } 

    }); 

    return false; 

    } 

    else 

    { 

    eval("<%=base.GetPostBackEventReference(checkBoxShowInventory)%>"); 

    } 

} 
+0

Könnten Sie den Code zu weniger newliney bearbeiten? – Macke

Antwort

2

In dem Fall das Kontrollkästchen, das sich erzieht:

checkBoxShoPrices.Attributes.Add("onclick", "return checkBox_click(this, event);"); 

Danach in der Funktion, die Sie es wie folgt erklären:

function checkBoxShowPrices_click(checkbox, e){ ...} 

und Sie haben in der Checkbox die Instanz, die Sie brauchen

0

Sie können jederzeit eine Funktion schreiben, die eine Funktion zurückgibt:

function genF(x, y) { 
    return function(z) { return x+y*z; }; 
}; 

var f1 = genF(1,2); 
var f2 = genF(2,3); 

f1(5); 
f2(5); 

Das könnte in deinem Fall helfen, denke ich. (Ihre Code-Paste ist schwer zu lesen ..)

Verwandte Themen