如何onkeypress事件中得到一个输入文本框的文本
2个回答
展开全部
1、保持简单。同时使用onKeyPress()和onKeyUp():<input id="edValue" type="text" onKeyPress="edValueKeyPress()" onKeyUp="edValueKeyPress()">
这需要获得最新的字符串值(后按键)的照顾,也更新,如果按住一个键。 jsFiddle中:
2、输入文本框,onkeypress事件中的值总是更改前的值 这是有意的:这允许事件侦听器取消按键。 如果事件侦听器取消的情况下,该值不会被更新。如果事件没有被取消,该值被更新,但该事件监听器被调用后。 为了得到后场数值已经更新了值 CodeGo.net,一个函数,在接下来的事件循环运行。办法做到这一点是调用setTimeout用的0:$('#field').keyup(function() {
var $field = $(this);
// this is the value before the keypress
var beforeVal = $field.val();
setTimeout(function() {
// this is the value after the keypress
var afterVal = $field.val();
}, 0);
});
试一下: 编辑:浏览器(如不触发退格键的按键事件,改变了按键的代码KEYUP。
3、我通常串连字段的值(即前它的更新),与关键事件相关联的密钥。近期JS所以需要支持在旧的IE浏览器的。 最近的例子JSdocument.querySelector('#test').addEventListener('keypress', function(evt) {
var real_val = this.value + String.fromCharCode(evt.which);
if (evt.which == 8) real_val = real_val.substr(0, real_val.length - 2);
alert(real_val);
}, false);
支持较旧的IE为例//get field
var field = document.getElementById('test');
//bind, somehow
if (window.addEventListener)
field.addEventListener('keypress', keypress_cb, false);
else
field.attachEvent('onkeypress', keypress_cb);
//callback
function keypress_cb(evt) {
evt = evt || window.event;
var code = evt.which || evt.keyCode,
real_val = this.value + String.fromCharCode(code);
if (code == 8) real_val = real_val.substr(0, real_val.length - 2);
}
[编辑-这种做法,在默认情况下,禁用按键的事情,比如后排空间,Ctrl +A。上面的代码的,但会进一步需要修补,以允许后者,以及一些其他的不测事件。看到伊恩・博伊德的下方。]
4、易... 在你的按键事件处理函数,写void ValidateKeyPressHandler(object sender, KeyPressEventArgs e)
{
var tb = sender as TextBox;
var startPos = tb.SelectionStart;
var selLen= tb.SelectionLength;
var afterEditValue = tb.Text.Remove(startPos, selLen)
.Insert(startPos, e.KeyChar.ToString());
// ... more here
}
这需要获得最新的字符串值(后按键)的照顾,也更新,如果按住一个键。 jsFiddle中:
2、输入文本框,onkeypress事件中的值总是更改前的值 这是有意的:这允许事件侦听器取消按键。 如果事件侦听器取消的情况下,该值不会被更新。如果事件没有被取消,该值被更新,但该事件监听器被调用后。 为了得到后场数值已经更新了值 CodeGo.net,一个函数,在接下来的事件循环运行。办法做到这一点是调用setTimeout用的0:$('#field').keyup(function() {
var $field = $(this);
// this is the value before the keypress
var beforeVal = $field.val();
setTimeout(function() {
// this is the value after the keypress
var afterVal = $field.val();
}, 0);
});
试一下: 编辑:浏览器(如不触发退格键的按键事件,改变了按键的代码KEYUP。
3、我通常串连字段的值(即前它的更新),与关键事件相关联的密钥。近期JS所以需要支持在旧的IE浏览器的。 最近的例子JSdocument.querySelector('#test').addEventListener('keypress', function(evt) {
var real_val = this.value + String.fromCharCode(evt.which);
if (evt.which == 8) real_val = real_val.substr(0, real_val.length - 2);
alert(real_val);
}, false);
支持较旧的IE为例//get field
var field = document.getElementById('test');
//bind, somehow
if (window.addEventListener)
field.addEventListener('keypress', keypress_cb, false);
else
field.attachEvent('onkeypress', keypress_cb);
//callback
function keypress_cb(evt) {
evt = evt || window.event;
var code = evt.which || evt.keyCode,
real_val = this.value + String.fromCharCode(code);
if (code == 8) real_val = real_val.substr(0, real_val.length - 2);
}
[编辑-这种做法,在默认情况下,禁用按键的事情,比如后排空间,Ctrl +A。上面的代码的,但会进一步需要修补,以允许后者,以及一些其他的不测事件。看到伊恩・博伊德的下方。]
4、易... 在你的按键事件处理函数,写void ValidateKeyPressHandler(object sender, KeyPressEventArgs e)
{
var tb = sender as TextBox;
var startPos = tb.SelectionStart;
var selLen= tb.SelectionLength;
var afterEditValue = tb.Text.Remove(startPos, selLen)
.Insert(startPos, e.KeyChar.ToString());
// ... more here
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询