2016-05-19 12 views
0

Ich möchte ein Checklisten-Steuerelement implementieren, wo immer nur ein Element ausgewählt werden kann. Im Grunde wie eine Optionsfeldgruppe, der einzige Unterschied ist, dass die Elemente deaktiviert werden können. Ich habe eine benutzerdefinierte Bindung erstellt, um dies zu erreichen, sie funktioniert in Bezug auf das Deaktivieren des Optionsfelds, jedoch wird der Wert im Ansichtsmodell nicht auf null gesetzt.Deaktivieren Sie das Optionsfeld mit KnockoutJS

ko.bindingHandlers.radioCheckbox = 
{ 
    init: function (element, valueAccessor, allBindings) { 
     ko.bindingHandlers.value.init(element, valueAccessor, allBindings); 
    }, 
    update: function (element, valueAccessor, allBindings) { 
     (function (element, valueAccessor, allBindings) { 
      $(element).mousedown(function(e) { 
       e.preventDefault(); 
       if ($(this).is(':checked')) { 
        allBindings().checked(null); 
       } else { 
        $(this).prop('checked', true); 
       } 
      }).click(function(e) { 
       e.preventDefault(); 
      }); 
     })(element, valueAccessor, allBindings); 
    } 
}; 

Fiddle

Es gibt ähnliche Frage, aber die akzeptierte Lösung hat das gleiche Problem wie ich. link

Antwort

0

Ich schaffte es, die zweite Lösung zu beheben. Ich habe einfach die Select-Funktion geändert:

Bitte beachten Sie, dass dies jetzt den Wert auf Null setzt.

fiddle

Verwandte Themen