2017-02-19 4 views
0

Ich bin neu zu Knockout und habe schwere Zeit versucht, dies zu lösen.Jquery Wählen Sie Äquivalent in Knockout Js

Ich versuche dies zu erreichen Wählen Sie die Funktion in Knockout. Wenn ich den Text auswähle, möchte ich den Rand hervorheben.

https://api.jquery.com/select/

Gerade jetzt, in Knockout, ich bin in der Lage, die Grenze mit Klick zu markieren, aber wenn der Benutzer den Text direkt in dem Textfeld auswählt, bin nicht in der Lage, die Grenze zu markieren.

Hier ist der HTML-Code dafür. In dieser Textbox ist viel los. Wenn meine Frage nicht klar ist, bitte fragen Sie, damit ich das besser erklären kann.

<input class="name" type="text" 
 
data-bind="click: function (y, event) { $root.SelectedWay($parent.Way); $root.SelectChild(y, event); $(event.target).select(); }, 
 
typeahead: { 'source': $root.All(), 'sorter': $root.ColorSorter, 'updater': $root.UpdateSelectedColor, 'highlighter': $root.HighlightColor, 'matcher': $root.MatchColor }, 
 
css: { 'selected': Selected }, 
 
value: Name" />

Antwort

2

wie über eine benutzerdefinierte Bindung. hier ist eine, wo die Grenze der jquery mit ausgewählten

ko.bindingHandlers.jquerySelect = { 
 
    init: function(element, valueAccessor, allBindingsAccessor) { 
 
    $(element).select(function() { 
 
     $(this).css("border", "5px solid red"); 
 
    }); 
 
    $(element).val(valueAccessor()()); 
 
    }, 
 
    //update the control when the view model changes 
 
    update: function(element, valueAccessor, allBindingsAccessor) { 
 
    $(element).val(valueAccessor()()); 
 
    } 
 
}; 
 

 

 

 
function model() { 
 
    var self = this; 
 
    this.myObservable = ko.observable('hello world'); 
 
} 
 

 
var mymodel = new model(); 
 

 
$(document).ready(function() { 
 
    ko.applyBindings(mymodel); 
 

 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input data-bind="jquerySelect: myObservable" />

+0

Hallo rot wird, können Sie bereits die Eingangsdaten-bind in meinem Code sehen. Wie kann ich diese Funktionalität zu der vorhandenen Datenbindung hinzufügen – Chatra

+0

denke, Sie müssen nur Wert ändern: name in jquerySelect: name. die benutzerdefinierte Bindung ersetzt Ihre Wertbindung –

+0

hi, ich denke, ich muss diese $ root.SelectChild (y, Ereignis) im oben genannten Code nennen. Wie kann ich das anstelle der Änderung der Grenze auf rot nennen. Die selectchild Funktion, die ich bereits erwähnte, habe den Code, den ich tun muss. – Chatra