[英]JavaScript on keyup function
以下部分工作:
function pvst(x,y){
return parseInt(x)/100 * parseInt(y);
}
var value1 = document.getElementById('v1').value,
value2 = document.getElementById('v2').value,
input_1 = document.getElementById('v1'),
input_2 = document.getElementById('v2');
function insertValue(){
var newSum = pvst(value1, value2);
if(isNaN(newSum) === true){
document.getElementById("test").innerHTML = 'only numbers!!';
}
else{
document.getElementById("test").innerHTML = newSum;
}
}
input_1.onkeyup = insertValue();
input_2.onkeyup = insertValue();
但是onkeyup没有按预期工作。 它假设你输入后立即更新newSum。我无法弄清楚我做错了什么
问题我看到你调用函数而不是传递函数处理程序:
使用此(删除()
):
input_1.onkeyup = insertValue;
input_2.onkeyup = insertValue;
而不是这个:
input_1.onkeyup = insertValue();
input_2.onkeyup = insertValue();
如果你不这样做,你的onkeyup
事件将尝试执行函数结果而不是执行函数。 因为你没有在insertValue
函数中返回任何内容, insertValue
它们只是得到undefined
值而什么都不做。
更新:当您将值存储在变量中时,每次更改输入后它们都不会更新并使用始终相同的值,要查看从DOM再次获取它们所需的值,因此您需要执行以下操作:
var newSum = pvst(document.getElementById('v1').value, document.getElementById('v2').value);
所以我身边的更新代码应如下所示:
function pvst(x,y){
return parseInt(x)/100 * parseInt(y);
}
var input_1 = document.getElementById('v1'),
input_2 = document.getElementById('v2');
function insertValue(){
var newSum = pvst(input_1.value, input_2.value);
if(isNaN(newSum) === true){
document.getElementById("test").innerHTML = 'only numbers!!';
} else {
document.getElementById("test").innerHTML = newSum;
}
}
input_1.onkeyup = insertValue;
input_2.onkeyup = insertValue;
尝试这个:
function pvst(x, y) {
return parseInt(x) / 100 * parseInt(y);
}
function insertValue() {
var value1 = document.getElementById('v1').value;
value2 = document.getElementById('v2').value;
input_1 = document.getElementById('v1');
input_2 = document.getElementById('v2');
var newSum = pvst(value1, value2);
if (isNaN(newSum) === true) {
document.getElementById("test").value = 'only numbers!!';
}
else {
document.getElementById("test").value = newSum;
}
}
示例HTML:
<input id="v1" type="text" onkeyup="insertValue();" />
<input id="v2" type="text" onkeyup="insertValue();" />
<input id="test" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.