2017-07-12 5 views
0

Ich habe eine Auswahlliste mit Multi wählen Sie die Option:HTML Mehrere wählen ändern ‚Keine Auswahl‘ Text

<select data-bind="attr:{'id':'multilistS'+Id()},foreach: Hlist" multiple="multiple"> 
    <option data-bind="click:$root.changeShole,value:$data.Id, text:N,attr:{'selected':$data.Sel}">Cheese</option> 
</select> 

aber ich möchte die ‚Keine Auswahl‘ ändern Text. Es ist möglich, dies in HTML-Code oder nur in JavaScript mit nonSelectedText Option zu tun?

+3

http://knockoutjs.com/documentation/options-binding.html sollte diese Frage beantworten. Lass es mich wissen, wenn nicht und ich kann eine Demo machen. –

+1

Danke John Pavek für Ihren Rat! :) – Dana

Antwort

2

Sie sollten John Paveks Ratschlag nehmen, sich über die Optionsbindungen zu informieren. Knockout bietet dafür spezielle Werkzeuge, und Ihre Konstruktion verwendet keine davon.

noneselectedtext scheint ein Merkmal der jQuery-UI multiselect widget zu sein. Wenn Sie das verwenden, sollten Sie eine binding handler for it verwenden.

Hier ist ein einfaches Beispiel für das, was Sie beschreiben, mit einer Nachricht, die sich ändert, je nachdem, ob etwas in der Mehrfachauswahl ausgewählt ist.

const vm = { 
 
    optionsCaption: ko.pureComputed(function() { 
 
    return (vm.selectedOptions().length === 0) ? 'Please select at least one' : 'ok'; 
 
    }), 
 
    selectedOptions: ko.observableArray([]), 
 
    Hlist: ko.observableArray([{ 
 
    Id: 1, 
 
    N: 'One' 
 
    }, { 
 
    Id: 2, 
 
    N: 'Two' 
 
    }]) 
 
}; 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> 
 
<div data-bind="text: optionsCaption"></div> 
 
<select data-bind="options: Hlist, optionsText: 'N', optionsValue: 'Id', selectedOptions: selectedOptions" multiple="multiple"> 
 
</select> 
 
<div data-bind="foreach: selectedOptions"> 
 
    <div data-bind="text:$data"></div> 
 
</div>

+0

Ich habe das getan und es hat funktioniert. Vergessen zu erwähnen :) Ich habe optionsCaption benutzt und es hat gut funktioniert – Dana

0

Ich denke, was Sie wollen, ist zunächst das Feld sagt "Keine Auswahl". Wenn der Benutzer einige Optionen auswählt, ändert sich der Text. Ist das korrekt? Wenn ja, könnte das funktionieren:

+0

Nicht zu Beginn. Jedes Mal, wenn ein Benutzer alle Optionen deaktiviert, wird diese Nachricht angezeigt. – Dana

+0

Es ist keine Option. Es ist nur eine Nachricht, die angezeigt wird, wenn keine Option aktiviert ist. – Dana