javascript - 无法从 'selectionStart' 读取 'HTMLInputElement' 属性 :

标签 javascript jquery knockout.js selection-api

我正在使用绑定(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/

相关文章:

javascript - 将文本框连同文本添加到 HTML 中的表格 (tbody)

javascript - 折叠内折叠不起作用

jquery-ui - 允许将 jquery ui slider 设置为高于最大值或低于最小值

javascript - angular 是否具有 vue.js 中的 "computed property"功能?

javascript - 数组在 res.json() 中为空,但在 res.json() 调用之前和之后都存在

javascript - 如何调试什么是设置dom元素样式?

javascript - 是否可以计算 html 页面的空白区域?

javascript - 从 JS 中的输入标签获取值,无需 id 或 HTML 控件

javascript - 页面加载时执行的单击功能

ajax - ASP.NET MVC 用户控件和撇号正在编码