I'm a noob at Javascript, but I'm trying to implement something on my website where users can type a quantity, and the subtotal updates dynamically as they type. For example: if items are 10 dollars each, and a user types 5 in the text field I would like it to show $50 next to the text box. Pretty simple multiplication, but I don't know how to do it with Javascript. I think onKeyPress somehow? Thanks!
A:
You should handle 'onkeyup' and 'onpaste' events to ensure you capture changes by keyboard and via clipboard paste events.
<input id='myinput' />
<script>
var myinput = document.getElementById('myinput');
function changeHandler() {
// here, you can access the input value with 'myinput.value' or 'this.value'
}
myinput.onkeyup = myinput.onpaste = changeHandler;
</script>
Similarly, use getElementById
and the element's innerHTML
attribute to set the contents of an element when you want to show the result.
sje397
2010-09-21 04:44:22
is `onpaste` considered standard? `onchange` might be a good alternative.
lincolnk
2010-09-21 05:19:39
+4
A:
Assuming the following HTML:
<input type="text" id="numberField"/>
<span id="result"></span>
JavaScript:
window.onload = function() {
var base = 10;
var numberField = document.getElementById('numberField');
numberField.onkeyup = numberField.onpaste = function() {
if(this.value.length == 0) {
document.getElementById('result').innerHTML = '';
return;
}
var number = parseInt(this.value);
if(isNaN(number)) return;
document.getElementById('result').innerHTML = number * base;
};
numberField.onkeyup(); //could just as easily have been onpaste();
};
Here's a working example.
Jacob Relkin
2010-09-21 04:45:19
Aha! This works perfectly! Just one other thing, is there a way to have it calculate the same thing for the default value in the text field, before any input from the user? Thanks :)
RobHardgood
2010-09-21 05:04:37
@RobHardgood, You can also upvote this answer by clicking on the up arrow. :)
Jacob Relkin
2010-09-21 05:20:19