2012-10-03 8 views
0

저는 세 개의 입력 필드가 있으며 데이터를 입력 할 때 데이터를 가져 오려고합니다. 괜찮 았지만 여전히이 오류를 방화범에 표시합니다.ReferenceError : field_2a가 정의되지 않았습니다.

희망을 위해 더 나은 방법이있을 것입니다. firbug에 표시

ERROR :

ReferenceError: field_2a is not defined 
[Break On This Error] 

...ataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + fie... 

내 스크립트가 아래로이다 :

<script> 

     function getFielddata(field_id, field_value){ 
      if(field_value != ""){ 


       //alert(field_id+" "+field_value); 
       if(field_id == "field-1a"){ 

        if(field_value){ 
         field_1a = field_value; 
        } 
        else 
        { 
         field_1a = ""; 
        } 
       } 

       else if(field_id == "field-2a"){ 
        if(field_value){ 
         field_2a = field_value; 
        } 
        else 
        { 
         field_2a = ""; 
        } 

       } 

       else if(field_id == "field-4a"){ 
        if(field_value){ 
         field_4a = field_value; 
        } 
        else 
        { 
         field_4a = ""; 
        } 
       } 

       var dataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + field_4a; 
       //alert(dataString); return false; 
       $.ajax({ 
        type: 'POST', 
        url: 'get_query.php', 
        data: dataString, 
        success: function(data) { 
        //$("#SuburbDiv").html(data); 
        alert("data inserted successfully"); 
        } 
        }); 

      } 
     } 

    </script> 

와 나는 그것을이 같은의 onChange 이벤트 절약하고 있습니다 :

<input type="text" id="field-2a" onChange="getFielddata(this.id, this.value)"/> 

및 도움말 ???

참고 :이 선언되지 않은 다른 범위에서 그 변수를 정의하지 않는 한이없는 버튼을

답변

0

당신이 내부 field-#a을 초기화하기 때문에 이런 일이 실행 된 만나지 문에, 당신이 그들에 액세스하려고합니다. 또한 이러한 변수가 함수에 국한되어야한다는 느낌을 갖습니다. 이것을 시도하십시오 :

function getFielddata(field_id, field_value){ 
     if(field_value != ""){ 
      var field_1a = "", 
       field_2a = "", 
       field_4a = ""; 

      //alert(field_id+" "+field_value); 
      if((field_id == "field-1a")){ 
       field_1a = field_value; 
      } 
      else if((field_id == "field-2a")){ 
       field_2a = field_value; 
      } 
      else if((field_id == "field-4a")){ 
       field_4a = field_value; 
      } 

      var dataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + field_4a; 
      //alert(dataString); return false; 
      $.ajax({ 
       type: 'POST', 
       url: 'get_query.php', 
       data: dataString, 
       success: function(data) { 
       //$("#SuburbDiv").html(data); 
       alert("data inserted successfully"); 
       } 
       }); 

     } 
    } 
+0

! 이 경우 데이터가 변경 될 때마다 게시됩니다. 모든 필드에 대한 데이터가있을 때만 제출하도록 제한하는 방법은 무엇입니까? if (field_1a! = ""&& .....)의 체크를 적용하려고합니다. 그래서 우리는 3 개의 모든 필드 데이터를 가지고있을 때만 게시하지만, 다른 필드를 기다리지 않고도 한 필드에 대해서도 데이터를 게시하고 있습니다. – atif

+0

달성하고자하는 것이 정확히 명확하지 않습니다. 제가 여러분에게 제시 한 대답은 여러분이 갖고 있던 논리를 보존합니다. 물론 몇 가지 향상이있을 수 있지만, 여러분이했던 오류를 던지지 않고 똑같은 일을합니다. –

1

를 제출합니다.

함수 상단에 var 키워드를 사용하여 선언하십시오.

var field_1a, field_2a, field_4a; 
+0

! 동일한 경우도 마찬가지이며 모든 단일 필드가 변경된 후에 데이터가 게시됩니다. 모든 필드의 데이터가있을 때만 제출하도록 제한하는 방법은 무엇입니까? if (field_1a! = ""&&&)의 검사를 적용하려고합니다. .....) 그래서 우리는 모든 세 필드의 데이터를 가지고 있지만 그것이 여전히 데이터를 게시하는 게시에만 – atif

관련 문제