首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截取输入输入

截取输入输入
EN

Stack Overflow用户
提问于 2015-10-03 05:46:33
回答 3查看 447关注 0票数 2

有没有办法在用户输入的值出现在元素中之前就截取它?我尝试使用Object.defineProperty,但它似乎不适用于InputElement.value,因为

代码语言:javascript
复制
var value;
Object.defineProperty($('input')[0], 'value', {
    get: function() {return value},
    set: function(val) {console.log(val); value = val;}
});

似乎不会改变任何行为。或者oninput/onchange是唯一的选择?因为我更希望我的代码在浏览器之前执行。

http://jsfiddle.net/zpmu1xcu/

EN

回答 3

Stack Overflow用户

发布于 2015-10-03 06:13:43

如果要在浏览器输入文本之前检测输入,可以使用Element.onkeydown属性。在浏览器解释操作之前,只要按下该键,就会触发此事件。

代码语言:javascript
复制
var demo_i = document.getElementById('demo_i');
var demo_d = document.getElementById('demo_d');

demo_i.onkeydown = function(e) {
    demo_d.textContent = e.which;
    // Returning false stops the event from going any further
    return false;
}
代码语言:javascript
复制
<input id="demo_i"><div id="demo_d"></div>

票数 1
EN

Stack Overflow用户

发布于 2015-10-03 06:14:10

这就是你要找的东西吗?

代码语言:javascript
复制
function InterceptInputValue($input) {
  var value = $input.val();
  // intercept value that changes and saved to value variable
  $input.keydown(function(e) {
    value += String.fromCharCode(e.keyCode);
    return false;
  });

  this.getValue = function() {
    return value;
  };
}

var i = new InterceptInputValue($("input"));

$("input").blur(function() {
  alert('input value is: ' + i.getValue());
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">

票数 0
EN

Stack Overflow用户

发布于 2015-10-03 11:08:44

我想你唯一的选择就是keyup

它是唯一一个可以捕获数据而不会留下任何数据的服务器。

使用下面的代码片段,在每个文本框中输入测试

代码尝试在每次击键时将该值重置为空白。

keyup是唯一一个可以删除每个笔划输入的工具。

一旦您离开该字段,keydown将清除键入的最后一个字符。

keypress会将键入的最后一个字符保留在input字段中

代码语言:javascript
复制
var tbxKeyDown = document.getElementById('tbxKeyDown');
var tbxKeyUp = document.getElementById('tbxKeyUp');
var tbxKeyPress = document.getElementById('tbxKeyPress');

// [Jedi mind trick] ==> you entered nothing

tbxKeyDown.addEventListener('keydown', testKeyDown, false);
tbxKeyUp.addEventListener('keyup', testKeyUp, false);
tbxKeyPress.addEventListener('keypress', testKeyPress, false);

// Remove anything entered

function testKeyDown() {
  tbxKeyDown.value = '';
}

function testKeyPress() {
  tbxKeyPress.value = '';
}

function testKeyUp() {
  tbxKeyUp.value = '';
}
代码语言:javascript
复制
KeyDown  = <input type="text" id="tbxKeyDown"  value="" />

<br/><br/>

KeyUp    = <input type="text" id="tbxKeyUp"    value="" />

<br/><br/>

KeyPress = <input type="text" id="tbxKeyPress" value="" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32916326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档