【发布时间】:2015-01-12 12:37:25
【问题描述】:
我正在开发一款使用大量表单输入的游戏。
Input1 的值改变了 Input2 的值。我开发了控件来增加或减少 Input1 的值。预期结果是它根据按钮单击或手动用户更改来更改 input2 的值。
Input1 和 Input2 都使用输入和更改事件侦听器。
当手动输入 input1 时,它会更改 input2 的值。但是,当使用按钮增加或减少 input1 的值时,它不会增加 input2。
在这种情况下使用什么事件监听器合适。如果没有,我需要在按钮点击时调用计算函数吗?
有很多代码需要跳过,但这应该是所有必需的东西
var game = {};
game.app = {
init: function() {
game.events.controls.init();
game.events.track.init();
},
}
game.calc = {
controls: {
increase: function(item) {
item = document.getElementById(item);
var size = item.getAttribute('data-size');
var max = item.getAttribute('data-max');
item.value = parseFloat(+item.value + 0.5).toFixed(size);
if (+max < item.value) {
item.value = (+max).toFixed(size);
}
}
},
track: {
act: function() {
document.getElementById('input2').value = (+document.getElementById('inputPlay').value + 100);
}
}
}
game.events = {
controls: {
init: function() {
this.increaseAction();
},
increaseAction: function() {
var increase = document.querySelectorAll('.increase');
for (var i = 0; i < increase.length; i++) {
increase[i].addEventListener('click', function(e) {
game.calc.controls.increase(e.target.getAttribute('data-src'));
return false;
});
}
}
},
track: {
init: function() {
this.actAction();
},
actAction: function() {
var inputPlay = document.getElementById('inputPlay');
inputPlay.addEventListener('input', function() {
game.calc.track.act();
});
inputPlay.addEventListener('change', function() {
game.calc.track.act();
});
}
}
}
game.app.init();
<a href="#" class="gameButton increase" data-src="inputPlay">Up</a>
<input type="text" id="inputPlay" name="inputPlay" value="100.00" class="inputMain" data-size="2" data-max="1000">
<input type="text" id="input2" name="input2" value="0.00" class="inputMain" data-size="2">
【问题讨论】:
标签: javascript