按下退格键或删除键时如何执行操作
How to do something when backspace or delete is pressed
所以当我按下退格键或删除时,我很难让代码执行某些操作。
我的代码运行得很好。它运行以下代码,更新多个文本输入字段的大小和值。
它调用compute(),后者通过updateAllFields()多次调用update()
function compute(input,number){
var decider = String(input.value);
updateAllFields(decider,number);
}
function update(label,convert,decider,number){
var updater = document.getElementById(label);
updater.value = parseInt(decider, number).toString(convert);
updater.style.width = ((updater.value.length + 1) * 12.5) + 'px';
}
function updateAllFields(decider,number){
update('binary',2,decider,number);
update('octal',8,decider,number);
update('decimal',10,decider,number);
update('hexadecimal',16,decider,number);
}
现在,一切都很顺利。我遇到了一个问题,当删除整个字段时,我会得到NaN,并且不能再编辑文本字段,除非我胜过NaN 情况是,如果用户点击"Ctrl+home",然后退格(擦除整个字段),就会出现NaN。相反,我想要的是,当NaN出现时,所有文本输入都会重置为与占位符显示时相同的大小和外观。 我查了一下,发现了以下内容: 它不起作用。我甚至尝试替换return false,以读取我的替换代码: 这是行不通的。我做错了什么?如果一个字段的整个文本字段都被删除,我如何才能将字段重置为原始状态?var input = document.getElementById('display');
input.onkeydown = function() {
var key = event.keyCode || event.charCode;
if( key !== 8 && key !== 46 )
return true;
};
function refresh(label,number){
var refresher = document.getElementById(label);
refresher.value = '';
refresher.size = number;
}
function refreshAllFields(){
refresh('binary','3');
refresh('octal','2');
refresh('decimal','4');
refresh('hexadecimal','8');
}
您不需要降低出错的可能性。你需要防止任何错误。只需验证输入数据,就不会得到NaN
。
如果输入是整数,只需在compute
中添加一张支票:
function compute(input,number){
var decider = String(input.value);
if (isNumeric(decider))
{
// do something else
decider = "0"; // for example
}
updateAllFields(decider, number);
}
其中CCD_ 3是确定字符串是否表示数字的函数。有很多方法可以做到这一点,例如:
function isNumeric(value)
{
if (isNaN(value)) {
return false;
}
var x = parseFloat(value);
return (x | 0) === x;
}
此外,您可以停止将decider
和number
作为字符串传递给每个函数:
function compute(input, number){
if (isNumeric(input.value))
{
updateAllFields(parseInt(input.value, number)); // val is a Number now
} else {
updateAllFields(0); // for example
}
}
function update(label,convert,val){
var updater = document.getElementById(label);
updater.value = val.toString(convert);
updater.style.width = ((updater.value.length + 1) * 12.5) + 'px';
}
function updateAllFields(val) {
update('binary',2,val);
update('octal',8,val);
update('decimal',10,val);
update('hexadecimal',16,val);
}
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval