未能读取'selectionStart'属性来自'HTMLInputElement':
Failed to read the 'selectionStart' property from 'HTMLInputElement':
我正在使用绑定句柄。如果我删除此代码,我的代码将被保存。但如果我使用这段代码会引发错误。
未捕获的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行。
有些DOM元素的值无法通过使用jQuery的.val()
或DOM的.value
获得。一个例子是HTML5number
字段;另一个是复选框。
我不确定这个异常发生在哪里-您可以通过在绑定处理程序中注释行并使用试错法轻松找到。我可以把你的绑定处理程序复制到一个测试页面中,但我不知道你要把它绑定到什么HTML。然而,我怀疑你会发现你必须进行一些元素类型检查,并为不同类型的DOM元素实现不同的逻辑。
我的建议是将您的init
功能更改为
init: function(element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().wysiwygOptions || {},
value = ko.utils.unwrapObservable(valueAccessor());
/*
the rest of your init function, commented-out
*/
}
验证此是否引发异常,然后逐块逐渐取消注释其余脚本,每次修改后重新加载页面,直到找到异常原因。
$.ajax({
processData: false,
contentType: false,
type:"POST",
添加CCD_ 11和CCD_。这对我有用。
- 没有找到相关文章