Arooran
Arooran

Reputation: 637

Knockout select binding

How to prevent select change event fires when the select biding is initiated? an add button on the page that will add select dynamically to the DOM. when each select box is adding to the DOM, the change event is firing rather than I select the item from the select?

Upvotes: 1

Views: 277

Answers (1)

Jalayn
Jalayn

Reputation: 9274

The thing is that KnockoutJS attempts to find which element of your listbox matches the requiredItem observable. There is none in the beginning, which is why it then attempts to set it to the "caption" of the listbox. You did not provide one, so it sets requiredItem to the first element of the listbox.

What you could do is add a caption item to your array:

self.requireditems = ko.observableArray([
{ desc: "Select an option from the list...", key: 0, editable: false } // ... and then all other items]);

and if you really don't want requiredItem to be updated:

self.selectedItem = ko.observable(self.requiredItems()[0]);

Then if you want to know if a valid element has been selected from the list, you could add the following property:

self.isValidSelectedItem = ko.computed(function() { 
     return self.selectedItem().id; 
});

Upvotes: 1

Related Questions