2012-03-31 5 views
0

I가 1-10에서 어떤 제품 량의 입력을 허가하는이 형태 :

<form action='cart.php' method='post'> 
<input type='hidden' name='next'> 
<input type='submit' value='Select Payment Mode'> 
</form> 
: 결제 모드의 선택을 표시하는

<form method='post' action='cart.php'> 
<input type='number' name='quantitychange' size='2' min='1' max='10' value=".$_SESSION["itemsSelected"][$i][1]."> 
<input type='hidden' name='ProductID' value=".$_SESSION["itemsSelected"][$i][0]."> 
<input type='submit' value='Update'> 
</form> 

그리고 다른 형태 (버튼)

내가 원하는 것은 사용자가 아무 것도 입력하지 않으면 (1 차 양식), 예. null 또는 0 인 경우 '제품 수량을 null 또는 0이 될 수 없습니다.'라는 경고 상자를 표시하려고합니다.

는 여기에 내 코드입니다 :

if (isset($_POST['next'])) { 
if ($_POST['quantitychange']==null || $_POST['quantitychange']==0) { 
?> 
<script type='text/javascript'> 
alert('Product quantity can't be null or 0.'); 
</script> 
<?php 
} 
else { 
echo " 
//Payment modes here 
"; 
} 
} 

오류는 사용자가 수량 내기를 입력하는 경우에도 그. 1에서 10까지, 그것은 여전히 ​​경고 메시지를 표시합니다. 어떤 도움이 필요합니까? 고맙습니다.

덧붙여서, 입력 타입 ""는, Google 크롬 브라우저에서만 동작합니다.

답변

1

작은 자바 스크립트 (또는 jQuery) 함수를 사용하여 양식을 게시하기 전에 유효성을 검사하십시오. 조건이 충족되지 않은 경우이 함수가 경고를 표시하도록 설정 한 다음 false를 반환합니다. 조건이 충족되면 true를 반환하고 제출됩니다.

Google 검색 결과가 표시 될 수 있으므로을 편집하여 내가 사용한 코드 스 니펫을 조금 도와 드리겠습니다. 아래 예제는 jQuery이며 직원 용으로 만든 웹 응용 프로그램의 프로덕션에서 사용되었습니다. document.form.doit.submit();은 양식을 제출하는 순수한 자바 스크립트 방식이어야합니다.

<script type="text/javascript"> 
function subForm() { 
    // document.form.doit.submit(); 
    if(test condition passes) { 
     $('#save_order').submit(); 
    } 
} 
</script> 

<form id="save_order" action="oms_db.php" method="POST"> 
<input id="doit" type="button" 
    value="i am a button" onClick="subForm();"> 
</form> 
+0

+1. 이미 자바 스크립트를 사용하고 있으므로 수량 필드가 onBlur인지 여부를 확인한 다음 사용자가 전체 양식을 제출하고 수신 페이지가로드 될 때까지 기다리지 않고 오류를 알릴 수 있습니다. – octern

+0

나는 submit 버튼에 validation을 두는 것을 좋아한다. submit 버튼을 submitMyNumberForm과 같은 함수 호출로 간단하게 만든다. 그러면 함수는 원하는 사용자 상호 작용을 수행 할 수있다. onBlur()가 의도하지 않게 마우스를 드래그하면 소리가납니다. 쿨하지 않아!또한 폼이 다시로드되지 않습니다. 함수가 데이터를 잘못 찾고 false를 반환하면 버튼이 전혀 밀리지 않고 페이지 방문자가 계속보고있는 것처럼 보입니다. jQuery 나 javascript를 사용하여 입력 필드에 포커스를 두거나 빨간색으로 만듭니다. –

+0

포인터를 입력 필드 위로 움직이면 (끌고있는 동안?) 포커스를 획득하게됩니까? 전에는 그런 일이 없었어요. 나는 onBlur가 이전에 클릭하거나 다른 방법으로 필드로 이동 한 경우에만 onBurur가 발생했다고 생각했습니다. – octern

0

양식에 오류가있는 것 같습니다. 대신에 아래의 :

<input type='number' name='quantitychange' size='2' min='1' max='10' value=".$_SESSION["itemsSelected"][$i][1]."> 
<input type='hidden' name='ProductID' value=".$_SESSION["itemsSelected"][$i][0]."> 

이 같은 것을 이용해야한다 :

<input type='number' name='quantitychange' size='2' min='1' max='10' value="<?php echo $_SESSION["itemsSelected"][$i][1]; ?>"> 
<input type='hidden' name='ProductID' value="<?php echo $_SESSION["itemsSelected"][$i][0]; ?>"> 

숨겨진 입력 필드의 값 매개 변수는 PHP에서 반향 할 필요가있다. 지금 당신이 가지고있는 것은 값이 단순한 문자열과 같습니다 "$ _ SESSION ["itemsSelected "] [$ i] [0].".

0

나는이 스크립트 후 지금까지 청소기이기 때문에 당신이

if(empty($_POST['quantitychange'])) { echo 'yourerror'; } 

사용하는 것이 좋습니다. (http://php.net/manual/en/function.empty.php)

업데이트 : 당신처럼 또한 , 당신은 두 개의 별도의 양식을 사용할 수없는 브라우저에서만 게시물 무슨

<form> 
</form> 

사이

하나만 사용하면 문제가 해결됩니다.