【问题标题】:Knockout onpaste event淘汰赛 onpaste 事件
【发布时间】:2018-02-27 10:49:52
【问题描述】:

我想知道是否有办法在淘汰赛中做到这一点http://jsfiddle.net/ult_combo/HzkCw/1/

我正在努力获取事件的粘贴值。我可以使用触发它

self.onScan = function (d, e) {
            var inputDate = e;
            setTimeout(function () {
                var theData = inputDate.target.value;
                console.log(theData );
            }, 100);

        };

并且元素被

绑定
data-bind="event:{ onpaste: onScan }

但只是未能获得价值。甚至尝试将值绑定到可观察对象但没有运气。

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    您可以从随事件提供的剪贴板访问粘贴的文本。

    var ViewModel = function() {
        var self = this;
        
        self.pastedText = ko.observable("Start");
        
        self.onPaste = function (vm, event) {
            var text = event.clipboardData.getData("text/plain");
            self.pastedText(text);
            
            // Indicate that text could be added into textbox
            return true;
        }
    }
    
    ko.applyBindings(new ViewModel());    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
    <div id="content-placeholder">
      <input type="text" placeholder="Paste text" data-bind="event:{ paste: onPaste }">
      <div data-bind="text: pastedText"></div>
    </div>

    【讨论】:

    • 我将此标记为答案。它似乎在我尝试过的另一台电脑上工作,但在我的电脑上却没有。我最终以不同的方式进行操作,并且在两台机器上都可以使用。我的机器不断抛出 undefined for clipboardData
    【解决方案2】:

    作为 Romaniuk 问题的一个小补充,KnockoutJS 会创建自己的事件来传递,其中没有 clipboardData 变量。要访问剪贴板数据,您需要访问originalEvent.clipboardData

    self.onPaste = function (vm, event) {
        var text = event.originalEvent.clipboardData.getData("text/plain");
        self.pastedText(text);
        
        // Indicate that text could be added into textbox
        return true;
    }  
    

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2015-02-24
      • 2012-05-22
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2013-04-12
      相关资源
      最近更新 更多