2011-11-24 6 views
0

본인 확인에 약간의 문제가 있습니다.확인 상자가 작동하지 않아 코드 오류가 발생했습니다.

코드에 확인 상자를 포함하기 전에 어떤 일이 발생했는지 확인하려면 버튼 (name = preQuestion)을 클릭하면 유효성 검사 오류가 발생하면 페이지에 유효성 검사 오류가 표시되고 양식을 제출하지 않습니다. 유효성 검사 오류가 없으면 양식을 제출합니다.

하지만 지금은 내가 할 수없는 일을하고 싶습니다. 오류가 계속 발생하는 경우 유효성 검사 오류가 있으면 현재 수행중인 작업을 수행하지만 유효성 검사 오류가없는 경우, 그러면 확인 상자가 나타나서 사용자가 확인을 클릭하거나 취소합니다. 사용자가 확인을 클릭 한 다음 양식을 제출하면 사용자가 취소를 클릭하면 확인 상자를 닫고 같은 페이지에 머물러 있습니다. 내가 어디로 잘못 가고 있니? 다음은

는 자바 스크립트 코드 (I 코드 오버 플로우는 모든 유효성 검사 코드를 포함하지 않거나이 될 수 있도록 코드를 단축이)입니다 :이 있도록

function validation() { 

       var isDataValid = true; 

       var sessionNoO = document.getElementById("sessionNo");    
       var questionNumberO = document.getElementById("txtQuestion"); 
       var roomTextO = document.getElementById("room"); 

       var errSessionMsgO = document.getElementById("sessionNoAlert"); 
       var errQuesMsgO = document.getElementById("numberAlert"); 
       var errRoomMsgO = document.getElementById("roomAlert"); 

       var trimmedRoomText = roomTextO.value.replace(/^\s+/, '').replace(/\s+$/, ''); 



    if (sessionNoO.value == ""){ 
      errSessionMsgO.innerHTML = "Please Enter in the Number of Sessions you Require"; 
      isDataValid = false; 
    }else if (sessionNoO.value == 0){ 
     errSessionMsgO.innerHTML = "Number of Sessions Must be More than 0"; 
      isDataValid = false; 
     }else{ 
       errSessionMsgO.innerHTML = ""; 
      } 


    if(questionNumberO.value == 0){ 
     errQuesMsgO.innerHTML = "Please Set the Number of Questions"; 
     isDataValid = false; 
    } else { 
     errQuesMsgO.innerHTML = ""; 
    } 

      if (roomTextO.value == ""){ 
      errRoomMsgO.innerHTML = "Please Enter in a Room Number"; 
      isDataValid = false; 
      }else if (!trimmedRoomText.length){ 
      errRoomMsgO.innerHTML = "Please Enter in a Room Number"; 
      isDataValid = false;  
     }else{ 
       errRoomMsgO.innerHTML = ""; 
      } 

      return isDataValid; 

      } 

      function submitform() 
      { 

     var sessionFormO = document.getElementById("sessionForm"); 

     sessionFormO.submit(); 

      } 

      document.getElementsByName("prequestion")[0].addEventListener('click', myClickHandler); 

       function myClickHandler(){ 
    if(validation()){ 

     function showConfirm(){ 

     var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would 
     not be able to go back and change any details towards your Session.Are you sure you want to Proceed?"); 

     if (confirmMsg==true) 
     { 
     submitform(); 
     }else{ 
     parent.close();  
     } 

    } 
} 
} 

HTML 폼 코드 (전체 폼을 표시하지 더 코드 오버 플로우) :

<form action="QandATable.php" method="post" id="sessionForm"> 
      <p><strong>2: Number of Sessions you Require:</strong> <input type="text" id="sessionNo" onkeypress="return isNumberKey(event)"><br/><span id="sessionNoAlert"></span></p> 
      <p><strong>8: Room:</strong> <input type="text" id="room"><br/><span id="roomAlert"></span></p>  <!-- Enter Room here--> 
      <table> 
      <tr> 
      <th>9: Number of Questions:</th> 
       <td class="spinner"><input type="text" class="spinnerQuestion" id="txtQuestion" name="textQuestion"></td> 
       <td><button class="scrollBtn" id="btnQuestionUp" type="button"><img src="Images/black_uppointing_triangle.png" alt="Increase" /></button> 
       <button class="scrollBtn" id="btnQuestionDown" type="button"><img src="Images/black_downpointing_triangle.png" alt="Decrease" /></button></td> 
       </tr> 
       </table> 
       <div id="numberAlert"></div> 
       <p><strong>10: </strong><input class="questionBtn" type="button" value="Prepare Questions" name="prequestion" onClick="myClickHandler()"/></p>  <!-- Prepare Questions here--> 

     </form> 
+0

myClickHandler() 메서드 정의를 찾을 수 없습니다 ?? 왜 당신이 직접 유효성 검사를 호출하지 않았습니까? onclick –

+0

왜냐하면 버튼이 유효성 검사를 원하기 때문에 확인 상자를 표시 한 다음 양식을 제출하면 showConfirm()을 포함하기 전에 모든 3 개의 함수 – BruceyBandit

+0

에서 정보를 검색하는 함수를 만드는 것이 더 낫습니다. 함수는 MyClickHandler 완벽하게 작동했습니다 – BruceyBandit

답변

0

나는 코드에서 보정을하지하고 지금은 잘 체크 아웃 할
기능 검증() {

작업 0
   var isDataValid = true; 

       var sessionNoO = document.getElementById("sessionNo");    
       var questionNumberO = document.getElementById("txtQuestion"); 
       var roomTextO = document.getElementById("room"); 

       var errSessionMsgO = document.getElementById("sessionNoAlert"); 
       var errQuesMsgO = document.getElementById("numberAlert"); 
       var errRoomMsgO = document.getElementById("roomAlert"); 

       var trimmedRoomText = roomTextO.value.replace(/^\s+/, '').replace(/\s+$/, ''); 



    if (sessionNoO.value == ""){ 
      errSessionMsgO.innerHTML = "Please Enter in the Number of Sessions you Require"; 
      isDataValid = false; 
    }else if (sessionNoO.value == 0){ 
     errSessionMsgO.innerHTML = "Number of Sessions Must be More than 0"; 
      isDataValid = false; 
     }else{ 
       errSessionMsgO.innerHTML = ""; 
      } 


    if(questionNumberO.value == 0){ 
     errQuesMsgO.innerHTML = "Please Set the Number of Questions"; 
     isDataValid = false; 
    } else { 
     errQuesMsgO.innerHTML = ""; 
    } 

      if (roomTextO.value == ""){ 
      errRoomMsgO.innerHTML = "Please Enter in a Room Number"; 
      isDataValid = false; 
      }else if (!trimmedRoomText.length){ 
      errRoomMsgO.innerHTML = "Please Enter in a Room Number"; 
      isDataValid = false;  
     }else{ 
       errRoomMsgO.innerHTML = ""; 
      } 

      return isDataValid; 

      } 

      function submitform() 
      { 

     var sessionFormO = document.getElementById("sessionForm"); 

     sessionFormO.submit(); 

      } 

      document.getElementsByName("prequestion")[0].addEventListener('click', myClickHandler); 

    // problem was here    
function myClickHandler() 
{ 
    if(validation()) 
{ 
showConfirm(); 


    } 
} 


function showConfirm(){ 

     var confirmMsg=confirm("Make sure that your details are correct, once you proceed after this stage you would not be able to go back and change any details towards your Session.Are you sure you want to Proceed? "); 

     if (confirmMsg==true) 
     { 
     submitform(); 
     }else{ 
     parent.close();  
     } 
} 
+0

그 위대한 일한있다. 확인을 클릭하거나 취소 할 때 확인 상자를 닫은 다음 다시 열어 확인을 클릭하거나 두 번째 취소하면 확인 상자가 닫히는 이유는 무엇입니까? – BruceyBandit

관련 문제