Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
onchange事件不接受我的javascript代码_Javascript_Onchange - Fatal编程技术网

onchange事件不接受我的javascript代码

onchange事件不接受我的javascript代码,javascript,onchange,Javascript,Onchange,我有两个文本输入供用户键入数字,我希望页面在另一个文本输入中输出这两个数字的总和 //添加两个文本值的结果应显示在此处 我建议将onchange的代码放在一个函数中,然后只调用onclick函数。它使事情更容易调试 范例 function addValue(field) { parseInt(document.getElementById('attendance_output').value) += parseInt(field.value); } <input id="at

我有两个文本输入供用户键入数字,我希望页面在另一个文本输入中输出这两个数字的总和


//添加两个文本值的结果应显示在此处

我建议将onchange的代码放在一个函数中,然后只调用onclick函数。它使事情更容易调试

范例

function addValue(field) {
    parseInt(document.getElementById('attendance_output').value) += parseInt(field.value);
}

<input id="attendance_1" onchange="addValue(this)" type="text" name="attendance_1" value="" />

<input id="attendance_2" onchange="parseInt(document.getElementById('attendance_output').value) += parseInt(this.value);" type="text" name="attendance_2" value="" />

// The results of adding the two text values should go here
<input id="attendance_output" type="text" value="" />
function addValue(field) {
    parseInt(document.getElementById('attendance_output').value) += parseInt(field.value);
}

<input id="attendance_1" onchange="addValue(this)" type="text" name="attendance_1" value="" />

<input id="attendance_2" onchange="parseInt(document.getElementById('attendance_output').value) += parseInt(this.value);" type="text" name="attendance_2" value="" />

// The results of adding the two text values should go here
<input id="attendance_output" type="text" value="" />

试试下面的代码。它应该会起作用。 您的代码无法工作,因为+=登录表达式


//添加两个文本值的结果应显示在此处

这是一个带有类型检查的基本JS

试试这个。:)如果用户输入字符串,它将无法正常工作,因此我认为它应该进行验证

function addValue() {
var num1 = document.getElementById('attendance_1').value;
var num2 = document.getElementById('attendance_2').value;
if (num1 === ''){
    num1 = 0;
}
if(num2 === ''){
    num2 = 0;
}

    var sum = parseInt(num1) + parseInt(num2);
  document.getElementById('attendance_output').value = sum;

}
您可以使用jquery使文本框只接受数字

$(document).ready(function() {
$("#attendance_1, #attendance_2").keydown(function (e) {
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
        (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||
        (e.keyCode >= 35 && e.keyCode <= 40)) {
             return;
    }
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
    });
});
$(文档).ready(函数(){
$(“考勤1,#考勤2”)。向下键(功能(e){
如果($.inArray(例如,keyCode[46,8,9,27,13,110,190])!=-1||
(e.keyCode==65&&(e.ctrlKey==true | | e.metaKey==true))||
(e.keyCode>=35&&e.keyCode 57))&&(e.keyCode<96|e.keyCode>105)){
e、 预防默认值();
}
});
});
在内部使用此代码

onchange="document.getElementById('attendance_output').value=+document.getElementById('attendance_output').value+ +this.value" onchange=“document.getElementById('attention\u output')。value=+document.getElementById('attention\u output')。value++this.value”
希望它对您有用:)

这可能是一个选项。我完全删除了内联JS。从
onchange
转到
oninput
处理程序,该处理程序仅在给定的值实际上是数字而不是字符串时才执行计算

var inpt=document.querySelectorAll('.attention');
var out=document.getElementById(“考勤输出”);
var onInput=函数(e){
if(/\d/.test(此.value)){
var sum=[].slice.call(inpt).reduce(函数(a,b){
if(a.value.length&&b.value.length){
返回+a.value++b.value;
}否则{
返回+a.value | |+b.value;
}
})
out.value=sum | | this.value;
}否则{
out.value=“”;
}
}
输入forEach(功能(el){
el.addEventListener('input',onInput,false)
})
+



谢谢您的时间,但输出字段显示“NaN”,如果其中一个字段没有有效的数字作为当前值,则结果为NaN。是的,我来这里之前也试过,同样的事。它在结果文本中说“楠”这一对。
$(document).ready(function() {
$("#attendance_1, #attendance_2").keydown(function (e) {
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
        (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||
        (e.keyCode >= 35 && e.keyCode <= 40)) {
             return;
    }
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
    });
});
onchange="document.getElementById('attendance_output').value=+document.getElementById('attendance_output').value+ +this.value"