我正在使用绑定(bind)处理程序。如果我删除此代码,我的代码将被保存。但是如果我使用 这段代码会抛出错误。
未捕获的 InvalidStateError:无法从“HTMLInputElement”读取“selectionStart”属性:输入元素的类型(“复选框”)不支持选择。
ko.bindingHandlers.wysiwyg = {
init: function (element, valueAccessor, allBindingsAccessor) {
debugger;
var options = allBindingsAccessor().wysiwygOptions || {};
var value = ko.utils.unwrapObservable(valueAccessor());
//value = value.text();
//var v = value[0].childNodes[0].data;
var $e = $(element);
$.extend(true, {
initialContent: value
}, options);
$e.wysiwyg(options);
//handle the field changing
function detectFn() {
var observable = valueAccessor();
var newvalue = $e.wysiwyg("getContent");
observable(newvalue);
}
var current = $e.wysiwyg('document');
var timer;
current.bind({
keyup: function () {
clearTimeout(timer);
timer = setTimeout(detectFn, 1000);
}
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$e.wysiwyg('destroy');
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).wysiwyg("setContent", value);
ko.bindingHandlers.value.update(element, valueAccessor);
}
};
最佳答案
您的 HTML 中有 type="checkbox"
的 input
元素,其中 Javascript 代码需要 type="text"
.
checkbox
没有文本,因此它不能有任何选择。但是您的代码试图访问不存在的属性 selectionStart
。
请看https://jsfiddle.net/u99f0q1j/查看演示的问题。
由于您没有发布 HTML,因此很难看出是什么导致了错误。
但在您的浏览器开发工具中,您应该能够单击“Uncaught InvalidStateError”消息旁边的行号,以便查看试图访问 selectionStart
属性的 Javascript 行你的复选框。
关于javascript - 无法从 'selectionStart' 读取 'HTMLInputElement' 属性 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033122/