2011-02-15 61 views
0

我有2个名为stuno和stuname的txt字段。当我在txtfield1中输入student no时,它会在txtfield2中显示学生姓名。所以这里是什么iam做文件iam onload txtfield1(stuno)的重点。如果我不把焦点拉的名字很好。如果我的重点不是拉动,请下载表格 我需要关注txtfield1(stuno)。这里是我的代码,如果我做错了事,请给我指正。为什么价值没有从JSON中拉出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 2011-02-15 14:56:34

+0

@pointy:[{“label”:“STU123-STUDENT1”,“value”:“STU123”,“status”:true}]。是JSOnlook看起来怎么样。当我的学生没有注意力的时候,它不能拉动学生的名字。如果我没有把注意力集中在工作上,那么 – Someone 2011-02-15 15:01:45

+0

好,那么你能描述一下你希望网页如何工作?比如说,用户应该什么时候看到它完美的工作?何时应该加载“名称”?是否有一些受欢迎的网站表现出您希望网页的行为方式? – Pointy 2011-02-15 15:03:11

回答

1

尝试使用keypress而不是change。当您离开输入焦点或更改选择框时,会触发更改。按键被按下或释放时触发。

所以不是:

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

使用

$("#stuno").keypress(function(){ 
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()。我已经在ready函数的外部使用了jQuery变量,并确保$变量实际上就是jQuery内部的ready函数。并且我已将change处理程序更改为仅在按下的键为输入键时在keypress上运行。