我有一个网页,其中包含两个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>
如果用户更改“价格”,然后将光标放在“发件人”上而不单击“提交”,则他们应该得到显示的警报。但这不起作用!我正在撕头发,但是我确定这是一个非常基本的错误。
最佳答案
使用var
时,您是在声明局部变量。因此,在您的代码中,您具有3个不同的变量:全局priceflag
,priceflag
中的pricechange
和priceflag
中的pricesubmit
。
另外,如注释中所建议,在需要布尔值的地方使用布尔值(true / false)。
这样的事情会起作用(注意函数中缺少的var
):
var priceflag = false;
function pricechange() {
priceflag = true;
}
function pricesubmit() {
priceflag = false;
}
function datechange() {
if (priceflag){
...
}
}
有用的读物:
Javascript Variable Scope on SO
var
on MDN