0

我有代码,它可以使用 javascript 对两个文本框值求和,但问题是当我将数量输入recamt文本框值和 javascript 一次又一次recamt地计算文本框值时,它应该只计算一次recamt文本框值而不是一次又一次?

<script type="text/javascript">
function B(){
document.getElementById('advance').value
=(parseFloat(document.getElementById('advance').value))+
(parseFloat(document.getElementById('recamt').value));
return false;
}  
</script>

<input class="input_field2" type="text" readonly name="advance" 
id="advance" value="50" onfocus="return B(0);" /><br />
<input class="input_field2" type="text" name="recamt" id="recamt">
4

2 回答 2

0

您可以在只读文本字段上保留一个属性以保留旧值:

function B()
{
    var adv = document.getElementById('advance'),
    rec = document.getElementById('recamt');

    if (typeof adv.oldvalue === 'undefined') {
        adv.oldvalue = parseFloat(adv.value); // keep old value
    }

    adv.value = adv.oldvalue + parseFloat(rec.value));
    rec.value = '';

    return false;
}
于 2013-03-26T12:27:55.663 回答
0

每次使用新值聚焦只读输入时,您都会调用 sum 函数。如果您只想将其添加到原始值,则需要将其存储在某个地方。

HTML:

<input type="text" id="advance" readonly="readonly" value="50" /><br />
<input type="text" id="recamt">

JS:

var advanceBox = document.getElementById('advance');
var originalValue = advanceBox.value;

advanceBox.onclick = function() {
    this.value = parseFloat(originalValue) +
        parseFloat(document.getElementById('recamt').value);

    return false;
};

http://jsfiddle.net/hQbhq/

笔记:

  • 您应该在 javascript 中绑定您的处理程序,而不是 HTML。
  • javascript 需要存在于页面上的 HTML之后,或者存在于 window.load 处理程序内部,否则它将无法找到advanceBox.
于 2013-03-26T12:36:38.793 回答