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"