Javascript:重置表单创建的变量值
Javascript: Resetting variable value created by form
我创建了一个表单,用户可以在其中输入存储在变量中或根据用户输入计算的详细信息。单击该按钮时,将显示一条消息,显示带有成本变量的消息。表单将清除,但消息仍然存在。我遇到的问题是表单将更新成本值,但不会更新消息以显示错误消息。我确定我缺少一些简单的东西?
*要理解我的意思,请通过以下方式测试小提琴:在每个维度框中添加维度 20,在下一个框中添加区域 2。 单击该按钮,费用将显示为 40 英镑。 在每个新框中再次输入 20,这次在区域中输入 3。费用更新为 60 英镑。但是,尝试在区域框中输入 6 或 7,应该会显示错误消息,但没有?
我认为 var 成本存储了以前的值,因此默认开关不会触发?如何重置成本变量?(我最后尝试了 cost=null,但它不起作用;保持相同的 msg 并读取 £null)。
http://jsfiddle.net/6dxLou41/
对不起,代码太长了。希望这是有道理的。
.html
<form id="form">
<input type="text" name="data" id="length" maxlength="4"/>Length (cm)
<input type="text" name="data" id="width" maxlength="4"/>Width (cm)
<input type="text" name="data" id="height" maxlength="4"/>Height (cm)<br>
<input type="text" name="data" id="zone" maxlength="4"/>Zone<br><br>
<button type="button" id="click_button">click</button>
</form>
<div id="message"></div>
.CSS
#message {
visibility:hidden;
}
#message.show {
visibility:visible;
}
.JS
var cost;
var button=document.getElementById("click_button");
var msg=document.getElementById("message");
function load(){
button.addEventListener("click",getSize, false);
}
window.onload=load();
function getSize(){
var length=document.getElementById("length").value;
var width=document.getElementById("height").value;
var height=document.getElementById("height").value;
var zone=document.getElementById("zone").value;
function checkSize(){
if (length<50 && width<50 && height<50) {
smallBox(zone);
}
else if (length>=50 && width>=50 && height>=50) {
largeBox(zone);
}
}
checkSize();
}
function smallBox(zone){
switch(zone){
case "1":
cost=20;
break;
case "2":
cost=40;
break;
case "3":
cost=60;
break;
default:
errorMsg();
break;
}
if(!isNaN(cost)){
showMsg();
}
}
function largeBox(zone){
switch(zone){
case "1":
cost=40;
break;
case "2":
cost=60;
break;
case "3":
cost=80;
break;
default:
errorMsg();
break;
}
showMsg();
}
function errorMsg(){
msg.innerText="Error. Please check the details entered and try again";
msg.className="show";
resetForm();
}
function showMsg(){
msg.innerText="Thank you. The cost will be £" + cost;
msg.className="show";
resetForm();
}
function resetForm(){
document.getElementById("form").reset();
}
你的
function resetForm(){
document.getElementById("form").reset();
}
应该是
function resetForm(){
document.getElementById("form").reset();
msg.innerText="";
msg.className="";
}
基本上:您不会将 #message 重新设置为隐藏,这是您开始的地方。而且,我还确保innerText是空白的。
尝试更改
var cost;
自
var cost=0;
相关文章:
- JavaScript:单击时相对于父级增加变量值
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 如何从特定页面中提取php变量值
- JavaScript模数未正确递增变量值
- 替换另一个变量对象中的变量值
- mandrill合并标记不接受变量值
- 将变量值从一个javascript传递到另一个javascript
- 如何将变量值附加到另一个变量
- html类名中的数字形式的Javascript变量值
- 如何在C#中获取Javascript变量值
- 如何将C#变量值传递给javascript以使用amcharts
- 正在从addEventListener中获取变量值
- 使用C#将在JavaScript中创建的变量值传递给ASP.Net中的服务器端(代码隐藏)
- 在innerHTML中包含变量值以创建输入id's和占位符
- 如何在名称中使用其他变量值创建 javascript 变量
- 用当前变量值动态创建Javascript函数
- 使用变量值创建带有属性的输入字段
- Angular:基于变量值创建ng类
- Javascript:重置表单创建的变量值
- 动态创建一个函数,在其中注入局部变量值