2011-02-15 3 views
0

stuno 및 stuname이라는 2 개의 txt 필드가 있습니다. txtfield1에 학생 no를 입력하면 txtfield2에 학생 이름이 표시됩니다. 그래서 여기 iam이 txtfield1 (stuno)에 포커스를 둔 문서 iam의 onload를 수행합니다. 초점을 맞추지 않으면 이름이 매우 잘립니다. 만약 내가 초점을 가지고 pulling.Onload 양식의 내가 txtfield1 (stuno)에 초점을해야합니다. 여기에 뭔가 잘못하고있어 내가 올바른지 제발 코드입니다.Jquery에서 값이 JSON에서 꺼내지지 않는 이유

$(document).ready(function(){ 
    $("#stuno").focus(); 
    $("#stuno").change(function(){ 
      if (jQuery.trim($('#stuno').val()) == '') {    
       $('#stuname').val(''); 
       $('#stuerr').text('Student Account Not Valid!') ; 
      } 
      else{ 
        $.ajaxSetup ({cache: false}); 
        $.getJSON("student.php",{'stuno' : $("#stuno").attr('value')}, 
        function(data){           
         if(data[0].status){       
          var labelvalue = data[0].label.split('-'); 
          $("#stuname").attr("value",labelvalue[1]); 
         }else{       
          $('#stuname').val(''); 
          $('#stuerr').text(data[0].label); 
         } 
         if( $("#stuname").attr("value")){        
          $('#stuerr').text('') ; 
        } 
        }); 

      } 
     }); 
    }); 
} 
+1

"student.php"가 반환하는 JSON 항목은 어떻게 생겼습니까? 또한 무엇이 잘못되었는지에 대한 설명이 많은 의미를 갖지는 않습니다 ... – Pointy

+0

@pointy : [{ "label": "STU123-STUDENT1", "value": "STU123", "status": true}] JSOnlooks와 같은 방법입니다. 학생에게 집중할 때 학생 이름을 가져올 수 없습니다. 초점이 맞지 않습니다. – Someone

+0

OK, 페이지 작업 방법을 설명해 주시겠습니까? ? 사용자가 완벽하게 작동 할 때 무엇을보아야합니까? "이름"은 언제로드되어야합니까? 페이지가 제대로 작동하도록하는 방식으로 작동하는 인기있는 웹 사이트가 있습니까? – Pointy

답변

1

change 대신 keypress을 사용해보세요. 변경 사항은 입력 포커스를 유지하거나 선택 상자를 변경하면 시작됩니다. 키 누르기는 키를 누르거나 놓을 때마다 발생합니다.

그래서 대신

: 초점이 손실 될 때까지

$("#stuno").change(function(){ 

사용

$("#stuno").keypress(function(){ 
+0

예.하지만 그는 모든 키 누르기를 위해 실제로 서버로 돌아가고 싶습니까? 학생 번호가 "10122357"이면 ... – Pointy

+0

예, 궁금합니다. 나는 그의 질문에 대한 나의 해석에 대답하고 있었다. – betamax

0

정말로 질문에 대한 답변이 아닙니다.

약간 이상한 $와 jQuery 사이를 변경하고 있습니다. 또한 사용 이유가 있습니까 $("#stuno").attr("value") instead of $("#stuno").val()?

0

일부 브라우저는 onChange 이벤트가 발생하지 않습니다. 아마도 다음과 같이 할 수도 있습니다.

jQuery(document).ready(function($){ 
    $("#stuno").focus().keypress(function(e){ 
     if(e.which === 13){ // if the enter key was pressed 
      e.preventDefault() // prevent the enter key from submitting the form 
      if ($.trim($('#stuno').val()) == '') { 
       $('#stuname').val(''); 
       $('#stuerr').text('Student Account Not Valid!') ; 
      } 
      else{ 
       $.ajaxSetup ({cache: false}); 
       $.getJSON("student.php",{'stuno' : $("#stuno").val()}, 
        function(data){         
         if(data[0].status){       
          var labelvalue = data[0].label.split('-'); 
          $("#stuname").val(labelvalue[1]); 
         }else{       
          $('#stuname').val(''); 
          $('#stuerr').text(data[0].label); 
         } 
         if( $("#stuname").val()){        
          $('#stuerr').text('') ; 
        } 
        }); 

      } 
     } 
    }); 
}); 

코드에 몇 가지 작업을 수행했습니다. 나는 모든 .attr('value',...) 전화를 .val()으로 변경하여 일관성을 유지했습니다. 그리고 준비 함수 밖에서 jQuery 변수를 사용하고 준비 변수 안에서 $ 변수가 실제로 jQuery인지 확인하십시오. 그리고 귀하의 change 처리기가 keypress에서 실행되도록 변경했습니다. 누른 키가 키인 경우에만 처리기를 변경했습니다.

+0

동작이 동일합니다. 변경 사항이 없습니다. – Someone

+0

이상한. keypress (enter) 키를 사용하고 변경을 위해 전혀 작동하지 않는 위 코드의 약간의 재 작업이 있습니다 : http : // jsfiddle.net/sholsinger/9CfxL/13/ – sholsinger

+0

오 PHP 스크립트에서 JSON을 요청하려면 내 코드의 [Enter] 키를 눌러야한다고 언급해야합니다. – sholsinger

관련 문제