JavaScript onblur 事件处理
JavaScript onblur event handling
我目前正在学习 JavaScript,但在处理事件时遇到了问题。我想添加一个事件,它将在 HTML 中的某些 text
字段中注册输入,对其进行操作,并在 alert
框中显示结果。
这里是 HTML 代码:
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="apples()"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="oranges()"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="bananas()"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
这里是 JavaScript:
var total = 0;
function apples ()
{
var a = document.order.apples.value;
total += a * 0.75;
}
function oranges ()
{
var o = document.order.oranges.value;
total += o * 0.60;
}
function bananas ()
{
var b = document.order.bananas.value;
total += b * 0.50;
}
function totalPrice ()
{
window.alert("Thank you for your order!\nYour total cost is: " + total);
}
现在,如果我在 totalPrice()
函数中调用 apples()
、oranges()
和 bananas()
,它可以正常工作,但是来自 [=19 的调用=] 标签似乎不起作用。
您必须以不同于函数的方式命名输入
// Code goes here
var total = 0;
function apples_func ()
{
var a = document.order.apples.value;
total += a * 0.75;
}
function oranges_func ()
{
var o = document.order.oranges.value;
total += o * 0.60;
}
function bananas_func()
{
var b = document.order.bananas.value;
total += b * 0.50;
}
function totalPrice ()
{
// apples();
//oranges();
//bananas();
window.alert("Thank you for your order!\nYour total cost is: " + total);
}
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="apples_func()"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="oranges_func()"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="bananas_func()"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
我认为你应该制作一个通用函数并使用每个水果的名称属性:
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="inputBlur(this)"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="inputBlur(this)"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="inputBlur(this)"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
JS 看起来像:
var fruitNumbers = {apple: 0, orange: 0, banana: 0};
var total = 0;
var prices = {apple: 0.75, orange: 0.6, banana: 0.5}
function inputBlur(fruitInput){
var fruit = fruitInput.getAttribute('name');
fruitNumbers[fruit] = this.value;
calculateTotal();
}
function calculateTotal(){
total = 0;
for(fruit in fruitNumbers){
total += fruitNumbers[fruit] * prices[fruit];
}
}
function totalPrice ()
{
window.alert("Thank you for your order!\nYour total cost is: " + total);
}
我目前正在学习 JavaScript,但在处理事件时遇到了问题。我想添加一个事件,它将在 HTML 中的某些 text
字段中注册输入,对其进行操作,并在 alert
框中显示结果。
这里是 HTML 代码:
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="apples()"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="oranges()"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="bananas()"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
这里是 JavaScript:
var total = 0;
function apples ()
{
var a = document.order.apples.value;
total += a * 0.75;
}
function oranges ()
{
var o = document.order.oranges.value;
total += o * 0.60;
}
function bananas ()
{
var b = document.order.bananas.value;
total += b * 0.50;
}
function totalPrice ()
{
window.alert("Thank you for your order!\nYour total cost is: " + total);
}
现在,如果我在 totalPrice()
函数中调用 apples()
、oranges()
和 bananas()
,它可以正常工作,但是来自 [=19 的调用=] 标签似乎不起作用。
您必须以不同于函数的方式命名输入
// Code goes here
var total = 0;
function apples_func ()
{
var a = document.order.apples.value;
total += a * 0.75;
}
function oranges_func ()
{
var o = document.order.oranges.value;
total += o * 0.60;
}
function bananas_func()
{
var b = document.order.bananas.value;
total += b * 0.50;
}
function totalPrice ()
{
// apples();
//oranges();
//bananas();
window.alert("Thank you for your order!\nYour total cost is: " + total);
}
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="apples_func()"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="oranges_func()"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="bananas_func()"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
我认为你应该制作一个通用函数并使用每个水果的名称属性:
<form name="order" onSubmit="totalPrice()">
<p><label><input type="text" name="apples" onblur="inputBlur(this)"/> Apples</label></p>
<p><label><input type="text" name="oranges" onblur="inputBlur(this)"/> Oranges</label></p>
<p><label><input type="text" name="bananas" onblur="inputBlur(this)"/> Bananas</label></p>
<p><input type="reset" value="Reset"/>
<input type="submit" value="Submit Query"/></p>
</form>
JS 看起来像:
var fruitNumbers = {apple: 0, orange: 0, banana: 0};
var total = 0;
var prices = {apple: 0.75, orange: 0.6, banana: 0.5}
function inputBlur(fruitInput){
var fruit = fruitInput.getAttribute('name');
fruitNumbers[fruit] = this.value;
calculateTotal();
}
function calculateTotal(){
total = 0;
for(fruit in fruitNumbers){
total += fruitNumbers[fruit] * prices[fruit];
}
}
function totalPrice ()
{
window.alert("Thank you for your order!\nYour total cost is: " + total);
}