2010-12-12 2 views
0

JS 파일에 다른 기능을 사용하지 않도록 설정하고 모든 것이 잘 작동했다 : 추가 기능은 내가 JS 파일에이 기능을했다

function check_acco_form() 
{ 
    var name=$("#name").val(); 
     var institution=$("#institution").val(); 
     var year=$("#year").val(); 

     //PNR Data 
    var pnr1=$("#pnr1").val(); 
    var pnr2=$("#pnr2").val(); 
    // Arrival date info 
    var arr_year=$("#arr_year").val(); 
    var arr_month=$("#arr_month").val(); 
    var arr_date=$("#arr_date").val(); 
    //Departure date info 
    var dep_year=$("#dep_year").val(); 
    var dep_month=$("#dep_month").val(); 
    var dep_date=$("#dep_date").val(); 

    var numericExpression = /^[0-9]+$/; 

     //Name, institution and year must not be empty 
     if(name=="" || institution=="" || year=="") 
    { 
     alert("One or more fields are empty."); 
       return; 
     } 
    //PNR must be all numbers 
    if(!pnr1.match(numericExpression) || !pnr2.match(numericExpression)) 
    { 
     alert("A PNR number consists of 10 digits only. Please enter again."); 
     $("#pnr1").val(""); 
     $("#pnr2").val(""); 
     return; 
    } 
    if(pnr1.length!=3 || pnr2.length!=7) 
    { 
     alert('Invalid PNR Number.'); 
     $("#pnr1").val(""); 
     $("#pnr2").val(""); 
     return; 
    } 

    if((arr_month==dep_month && dep_date<arr_date) || (dep_month<arr_month)) 
    { 
     alert('Invalid dates.Please check again.'); 
     return; 
    } 

    //Test passed. Store in database; 
    URL="saveAcco.php"; 
    parameters="name="+name+"&ins="+institution+"&year="+year+"&pnr="+pnr1+""+pnr2+"&dateArr="+arr_year+"-"+arr_month+"-"+arr_date+"&dateDep="+dep_year+"-"+dep_month+"-"+dep_date; 
    $.get(URL+"?"+parameters,function(data){ 
     $("#msg_box").html(data); 
     if(data=="Your changes have been saved." || data=="Your data has been saved and is pending approval.") 
       { 
      $("#acco_status").html('<br/><b>Accomodation Approval Status</b> : <span style="padding:3px;background-color:#f4fb3c">Approval Pending</span><br/><br/>'); 
       } 
     $("#msg_box").fadeIn("slow",function(){ 
      setTimeout('fadeOutMsgBox();',3000); 
       }); 
      }); 
} 

내가이 기능에 약간의 변경을 (변수 'mobile_num을'추가 와 'train_num'조건 '하면하는'사용자가 숫자 만 입력 확인 포함) 기능을 얻을 jQuery를을 변경 한 다음 코드의 결과 것을 : 변경 후

function check_acco_form() 
{ 
    //Personal Information 
    var name=$("#name").val(); 
    var institution=$("#institution").val(); 
    var year=$("#year").val(); 

    //Contact Information 
    var mobile_num=$("#mobile").val(); 

     //PNR Data 
    var pnr1=$("#pnr1").val(); 
    var pnr2=$("#pnr2").val(); 

    //Train Number 
    var train_num=$("#trainnum").val(); 

    // Arrival date info 
    var arr_year=$("#arr_year").val(); 
    var arr_month=$("#arr_month").val(); 
    var arr_date=$("#arr_date").val(); 
    //Departure date info 
    var dep_year=$("#dep_year").val(); 
    var dep_month=$("#dep_month").val(); 
    var dep_date=$("#dep_date").val(); 

    var numericExpression = /^[0-9]+$/; 

    //Name, institution and year must not be empty. 
    if(name=="" || institution=="" || year=="") 
    { 
     alert("One or more fields are empty."); 
     return; 
    } 

    //PNR can be empty but if entered must be all numbers 
    if(pnr1!="" and pnr2!="") 
    { 
     if(!pnr1.match(numericExpression) || !pnr2.match(numericExpression)) 
     { 
      alert("A PNR number consists of 10 digits only. Please enter again."); 
      $("#pnr1").val(""); 
      $("#pnr2").val(""); 
      return; 
     } 

     if(pnr1.length!=3 || pnr2.length!=7) 
     { 
      alert('Invalid PNR Number.'); 
      $("#pnr1").val(""); 
      $("#pnr2").val(""); 
      return; 
     } 
    } 

    //Train number can be empty but if entered must be all numbers 
    if(train_num!="") 
    { 
     if(!train_num.match(numericExpression)) 
     { 
      alert("Train number must consits of digits only"); 
      $("#trainnum").val(""); 
      return; 
     } 
    } 

    //Mobile num can be empty but must be all numbers 
    if(mobile_num!="") 
    { 
     if(!mobile_num.match(numericExpression)) 
     { 
      alert("Invalid mobile number"); 
      $("#mobile_num").val(""); 
      return; 
     } 
     if(mobile_num.length!=10) 
     { 
      alert('A mobile number consists of 10 digits.Please enter again.'); 
      return; 
     } 
    } 

    if((arr_month==dep_month && dep_date<arr_date) || (dep_month<arr_month)) 
    { 
     alert('Departure date cannot be before arrival date.Please check again.'); 
     return; 
    } 

    //Test passed. Store in database; 
    URL="saveAcco.php"; 
    parameters="name="+name+"&ins="+institution+"&year="+year+"&pnr="+pnr1+""+pnr2+"&dateArr="+arr_year+"-"+arr_month+"-"+arr_date+"&dateDep="+dep_year+"-"+dep_month+"-"+dep_date+"&mobile="+mobile_num+"&train_num="+train_num; 
    $.get(URL+"?"+parameters,function(data){ 
     $("#msg_box").html(data); 
     if(data=="Your changes have been saved." || data=="Your data has been saved and is pending approval.") 
       { 
      $("#acco_status").html('<br/><b>Accomodation Approval Status</b> : <span style="padding:3px;background-color:#f4fb3c">Approval Pending</span><br/><br/>'); 
      $("#acco_letter_print").html('Download accomodation letter <a href="PDF/acco_print.php" target="_blank">here</a>'); 
      $("#acco_letter_print").fadeIn();   
       } 
     $("#msg_box").fadeIn("slow",function(){ 
      setTimeout('fadeOutMsgBox();',3000); 
       }); 
      }); //End of get function 

} 

, 갑자기 모든 기능에서을 이 함수의 js 파일은 다음을 포함하여 작동을 멈췄다. 이 함수. 포럼 검색에서 발견 된 토론은 JavaScript function causing all other functions not to work inside js file이며 예약어 사용으로 인한 것일 수 있습니다. 그러나, 내 코드에서 변수로 사용되는 예약어를 찾을 수 없습니다. 어떤 아이디어가 문제 일 수 있습니까?

+0

'diff -u'의 출력을 두 가지 모두에 대해 게시하십시오. –

+1

브라우저에서 스크립트를로드하고 실행하면 오류 메시지가 나타납니다. –

답변

2

당신은 거기에 이것을 가지고 :

if(pnr1!="" and pnr2!="") 

그것은해야한다 :이 같은

if(pnr1!="" && pnr2!="") 

모든 구문 오류가 전체 것은 실패 것들에 대한 귀하의 오류 콘솔을 반드시 확인하게됩니다 이렇게하면 빨리 원인을 알 수 있습니다.

제쳐두고로서

, 변경뿐만 setTimeout() 문자열을 전달 직접 함수 기준을 통과하지 않도록 노력이 : 이에

setTimeout('fadeOutMsgBox();',3000); 

:

setTimeout(fadeOutMsgBox,3000); 

이 뜻 적은 이슈를주고 범위 내의 어느 곳이든 함수를 허용 할 수 있습니다. (문자열과 같이) 전역 적 일 필요는 없습니다.