2013-01-21 2 views
2

두 개의 html 양식을 포함하는 웹 페이지가 있는데 각각 제출 버튼이 있습니다. 사용자가 첫 번째 양식에서 제출 단추를 클릭하여 두 번째 양식으로 이동하기를 원합니다. 다음 사용자 변경 "가격"및 "에 커서를두고 경우초등 자바 스크립트 - 변수 범위 혼동

<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> 

:

<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> 

그런 다음 매우 축약 된 형태의 양식은 다음과 같습니다

나는 머리에서이 자바 스크립트를 FromDate "를 클릭하지 않고 경고를 표시해야합니다. 그러나 그것은 효과가 없습니다! 머리카락이 찢어지기는하지만 아직 기본적인 오류라고 확신합니다.

+0

에 대한 논리 값을 사용하십시오 불리언. 나는 또한 그것의 기능과 관련이있는 것으로 명명하는 것을 고려할 것이다. –

+0

"기본 초보자 용"은 javascript 태그가 이미 제공 한 javascript와 관련된 정보 외에 다른 정보를 제공하지 않으므로이 질문의 제목을 질문과 관련있는 것으로 변경하는 것이 좋습니다. – jbabey

+0

[jqFundamentals] (http://jqfundamentals.com/chapter/javascript-basics)의 "함수 및 변수 범위"섹션을 확인하십시오. – jbabey

답변

2

var을 사용하면 로컬 변수가 선언됩니다. 따라서 귀하의 코드에서 글로벌 priceflag, priceflag, pricechange, priceflag, pricesubmit의 3 가지 변수가 있습니다.

또한 의견에 제안 된대로 부울이 필요한 곳에서 부울 (true/false)을 사용하십시오. 이 (함수 내부에 누락 된 var의 통지) 일 것 같은

뭔가 : 유용한

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

+0

고마워요, @ bažmegakapa. 나는 거의 다 왔어. 글로벌 변수와 로컬 변수에 대한 요점은 일단 분명히 지적하면 분명합니다. 나는 문제를 추적하려고 시도하면서 원래 불린으로 시작했지만 대체 된 숫자를 사용했다. – TrapezeArtist

+0

이제 거의 작동하지만 기능이 서로 상충하는 문제가 있습니다. 사용자가 "price"를 변경 한 다음 마우스를 사용하여 "FromDate"에 커서를 놓으면 두 기능이 동시에 트리거하려고 시도하는 것처럼 보이므로 두 번째 기능 (원하는 경고를 표시 함)이 나타나지 않습니다. 작업. 여러 가지 onXxxx 비트를 가지고 놀 필요가 있다고 생각합니다.하지만 어떻게 작동하는지 확신 할 수 없습니다. – TrapezeArtist

+1

마지막으로 onChange, onClick, onMousedown 및 onMouseover가 혼합되어 작동합니다. 약간 지저분하지만 작동합니다! – TrapezeArtist