通过在框外单击激活功能

时间:2014-01-23 15:08:25

标签: javascript html

好吧所以我在使用函数时遇到了一些麻烦。我所要做的就是在从HTML框中点击后激活该功能。

<hmtl>
<body>
<center>
<script>
function calculateTax() {
var a = document.getElementById('boxone').value;
var b = document.getElementById('boxtwo').value;
var c = a/100*18;

b = c + a;

document.getElementById('boxone').value = a;
document.getElementById('boxtwo').value = b;
}
</script>

<input type="text" id="boxone" value="">
<input type="text" id="boxtwo" value=""><br>
<input type="hidden" onclick="calculateTax()">
</center>
</body>
</html>

任何人都可以告诉我应该放什么而不是onclick以及为什么我的公式不起作用。谢谢

3 个答案:

答案 0 :(得分:1)

我为你做了一个小提琴:http://jsfiddle.net/Dmc9Z/1/

基本上,您可以向onclick添加body个事件。我还在那里添加了一个按钮,可以提交它,具体取决于你想要的。

您的代码无法正常工作的原因是因为输入正在作为字符串处理。当您“添加”时,您只是将值连接到字符串。我添加parseInt来解决这个问题。我还删除了一些冗余代码。

答案 1 :(得分:1)

您需要onBlur事件侦听器。

<input type="text" id="boxone" value="" onBlur="calculateTax()">

onBlur是当元素失去焦点时调用的事件 - 例如,当您单击远离输入时。

在主体上添加onClick会起作用,但这不是最好的方法,因为每当有人点击页面上的任何地方时,它都会使该功能运行 - 而不仅仅是当他们点击输入时。

答案 2 :(得分:0)

我建议保持你的javascript和html分开。您可以向主体添加事件侦听器,并使其仅在不是输入字段时触发,例如:

document.getElementsByTagName("body")[0].addEventListener("click", function(target) {
    if (target.nodeName === "INPUT") return false; // if our focus is an input field we don't want to fire the event
    calculateTax();
}, false);
相关问题