我有2个名为stuno和stuname的txt字段。当我在txtfield1中输入student no时,它会拉出并在txtfield2中显示学生姓名。所以这是我正在做的文件onload把重点放在txtfield1(stuno)。如果我没有把重点放在这个名称非常好。如果我有焦点,它不会拉动。载入表格 我需要关注txtfield1(stuno)。这是代码,如果我做错了,请纠正我。
$(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( '' ) ;
}
});
}
});
});
}
答案 0 :(得分:1)
尝试使用keypress
代替change
。离开输入焦点或更改选择框时会触发更改。只要按下或释放按键,就会触发按键。
所以而不是:
$("#stuno").change(function(){
使用
$("#stuno").keypress(function(){
答案 1 :(得分:0)
不是你问题的答案。
你在$和jQuery之间进行了改变,这有点奇怪。此外,您使用$("#stuno").attr("value") instead of $("#stuno").val()?
答案 2 :(得分: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
变量,并确保$
变量实际上是你的ready函数中的jQuery。只有当按下的键是 Enter 键时,我才将change
处理程序更改为在keypress
上运行。