2012-03-24 1 views
0

Ich habe eine Combobox mit Checkboxen. Ich verwende jQuery, um allen Kontrollkästchen ein Click-Ereignis hinzuzufügen. Wenn das Kontrollkästchen aktiviert ist, wird ein Skript soll ein Attribut des geprüften Box laufen und zu überprüfen, um zu bestimmen, es Art ist und dann Funktionen entsprechend:checkbox running script onclick, bevor das checked flag gesetzt wird

function() { 
    $('.RcbTag').find('input[type="checkbox"]').click(function() { 
     var evtCB = $(this); 
     var id = $(this).closest(".rcbSlide").siblings(".RcbTag").attr("id"); 
     var rcbObject = $find(id); 

     rcbObject.get_items().forEach(
     function (item, index) { 
      if (item.get_attributes().getAttribute('GUIDType') == 'group' && 
       item.get_checked()) { 
       alert("Checked"); 
      } 
     }); 
    }); 

Das Problem ist im Moment, dass es scheint, dass das Skript ausgeführt wird bevor das Kontrollkästchen tatsächlich auf "checked" gestellt wird. In diesem Beispiel sieht es aus, ob das Elementattribut "Gruppe" ist und ob es aktiviert ist. Dies gibt immer false zurück, wird aber wahr zurückgeben, wenn ich es abnehme. Ich vermisse also hier eine Reihenfolge der Ereignisse. Wie behebe ich das?

Antwort

0

Ich denke, Sie mischen jQuery Click-Handler und den Telerik-Code. Lassen Sie uns versuchen, bei den von Telerik genehmigten Veranstaltungen zu bleiben, und ich denke, alles wird so funktionieren, wie Sie es erwarten.

Auf Ihrem RadComboBox, fügen Sie einen Ereignishandler declaritively wie folgt aus:

OnClientItemChecked = "ComboBoxRowClick" 

dann die JS-Funktion erklären, wie Sie es jetzt haben (außer wir es nennen wollen, und es ist nicht anonym bleiben):

function ComboBoxRowClick(sender, args) { 
    if (args.get_item().get_attributes().getAttribute('GUIDType') == 'group' && 
     args.get_item().get_checked()) { 
     alert("Checked"); 
    } 
} 

Für weitere Informationen über die Client-Seite Funktionen von Telerik, können Sie diesen Link: http://www.telerik.com/help/aspnet-ajax/listboxitem-client-api.html

auch Sie könnten laufen in dieses kleine annoyan ce, wo Sie in das kleine Kontrollkästchen selbst klicken müssen, und nicht irgendwo in der Zeile (wie man es erwarten könnte). Sie können einen Workaround für diesen hier finden: http://www.msigman.com/2010/07/telerik-radlistbox-fix/

0

versuchen Sie mit statt click? Auf diese Weise werden auch Änderungen über die Tastatur erfasst. und es wird dein Problem lösen.

+0

tut immer noch dasselbe – Sinaesthetic

+0

Sie verwenden 'get_checked' und' get_items' - das ist nicht Teil von jQuery. Hast du jstree oder etwas anderes hinzugefügt? Gibt es irgendwelche js-Fehler in der Konsole? – StilgarBF

+0

get_checked und get_items sind Teil des Steuerobjekts telerik, das eine Combobox mit Checkboxen ist – Sinaesthetic