初级Javascript - 可变范围混淆

时间:2013-01-21 16:21:42

标签: javascript if-statement

我有一个网页,其中包含两个html表单,每个表单都有一个提交按钮。我想确保用户点击第一个表单上的提交按钮,然后再转到第二个表单。

我脑子里有这个javascript:

<script type="text/javascript">
<!--Script to block date changes when price changes pending
var priceflag = 0;  
function pricechange() {
var priceflag = 1;  
}
function pricesubmit() {
var priceflag = 0;  
}
function datechange() {
    if (priceflag == 1){
alert ("Please click \"Submit\" before you move on to the dates.");
    }
}
-->
</script>

然后以非常简短的形式表示:

<form action="<?php $_SERVER['PHP_SELF']?>" method="post" name="seasonprice">
<input name="price" value="<?php echo $price ?>" type="text" size="7" maxlength="7" onChange="pricechange()">
<input name="price2" value="" type="text" size="7" maxlength="7">
<input name="submit" type="submit" value="Submit" onClick="pricesubmit()">
</form>
<br>
<br>
<form id="addseason" action="<?php $_SERVER['PHP_SELF']?>" method="post" name="addseason">
<input name="FromDate" type="date" value="2013-01-01" size="16" onMouseDown="datechange();">
</form>

如果用户更改“价格”,然后将光标置于“FromDate”而不点击“提交”,则应显示警报。但它不起作用!我正在撕扯我的头发,但我确定这是一个非常基本的错误。

1 个答案:

答案 0 :(得分:2)

使用var时,您声明了一个局部变量。因此,在您的代码中,您有3个不同的变量:全局priceflagpriceflag中的pricechangepriceflag中的pricesubmit

另外,正如评论中所建议的那样,使用布尔值(true / false),你需要一个布尔值。

这样的东西会起作用(注意函数中缺少的var):

var priceflag = false;  
function pricechange() {
    priceflag = true;  
}
function pricesubmit() {
    priceflag = false;  
}
function datechange() {
     if (priceflag){
         ...
     }
}

有用的读物​​: