2014-01-23 69 views
2

好的,所以我在獲取函數時遇到了一些麻煩。我所要做的就是一旦我從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,爲什麼我的公式不work.Thanks

+0

忘了補充,特別感謝Barmar幫助我得到這麼遠 – user3140981

+0

你的配方有什麼問題? – mjkaufer

回答

1

我爲你一個小提琴:http://jsfiddle.net/Dmc9Z/1/

基本上,你可以添加一個onclick事件到body。我還添加了一個按鈕,可以提交它,這取決於你想要什麼。

您的代碼無法工作的原因是因爲輸入正在作爲字符串處理。當你「添加」時,你只是將值串聯到字符串。我添加了parseInt來解決這個問題。我還刪除了一些冗餘代碼。

+1

完美地工作,謝謝你:) – user3140981

+0

你可能會考慮@Simon Brahan的回答。無論您點擊哪個位置,文本框的OnBlur事件都會觸發。如果您使用身體的onclick事件,除非您單擊另一個控件,否則它不會觸發。 –

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); 
1

你想要onBlur事件偵聽器。

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

的onblur稱爲事件當一個元素失去焦點 - 當您單擊從輸入了,例如。

將onClick添加到主體可以正常工作,但不是最好的方法,因爲每次任何人在您的頁面上點擊任何地方時都會運行該功能 - 而不僅僅是當他們點擊輸入時。