Jquery按键问题

时间:2011-03-22 21:16:12

标签: jquery

我一直四处奔波,所以我希望有人可以帮助我。

我的代码中有两个函数。第一个工作正常。您可以单击显示的值,在显示的输入字段中输入信息,然后按Enter键即可运行。第二个当你单击它显示输入的值时,但是当你按Enter键时它会挂起页面然后刷新。但是存储了cookie。

任何想法为什么第一个工作正常但第二个是让页面挂起并刷新?

$(document).ready(function() {

    $('#userTo').click(function() {         
        if($(this).children('[name=userTo]').length == 0) {         
            $(this).html('<input type="text" name="userTo" size="3" value="<?php echo (abs((int)        $_COOKIE['user_for']) ? abs((int) $_COOKIE['user_for']) : $ir['userid']); ?>" style="font-size: 12px;font-family: Tahoma;padding:0;margin:0;text-align: center;" />');
            $('[name=userTo]').focus();
        }
    });

    $('#userTo').keypress(function(e){
        if(e.which == 13){
            var username = $('[name=userTo]').val();
            $.ajax({
                type: "GET",
                url: "donate.php",
                cache: false,
                data: "username=" + username,
                success: function(data){
                    if(data == 'null') {
                        alert('That user dosen\'t exist.'); 

                        $('[name=userTo]').focus();
                    } else {
                        $.cookie("user_for", username);
                        $('#userTo').html(data);
                    }         
                }                
             });        
          } 
     });
});

这是第二个功能。

$(document).ready(function() {

    $('#credits').click(function() {        
        if($(this).children('[name=credits]').length == 0) {

            $(this).html('<input type="text" name="credits" size="3" value="<?php echo (abs((int)   $_COOKIE['user_credits']) ? abs((int) $_COOKIE['user_credits']) : $ir['d_credits']); ?>" style="font-size: 12px;font-family: Tahoma;padding:0;margin:0;text-align: center;" />');           
            $('[name=credits]').focus();            
        }       
    });

    $('#credits').keypress(function(e){         
        if(e.which == 13){              
            var d_credits = $('[name=credits]').val();              
            $.ajax({                   
                type: "GET",                   
                url: "donate.php",                 
                cache: false,                  
                data: "d_credits=" + d_credits,                
                success: function(data){                     
                    if(data == 'null') {                    
                        alert('That user dosen\'t exist.');      
                        $('[name=credits]').focus();                               } else {                      
                        $.cookie("user_credits", d_credits);                                  $('#credits').html(data);              
                    }                 
                }            
            });     
         }      
    });
});

1 个答案:

答案 0 :(得分:0)

您可以在代码中执行批次清理,但主要的是:如果您在表单中按Enter键时不想刷新页面,则需要预防当你按Enter键时触发的浏览器的默认按键处理程序。就像现在一样,你的处理函数将首先运行并执行你的ajax GET,然后运行默认处理程序,它将(可能)提交表单。

$('#credits').keypress(function(e) {
    if(e.which == 10 || e.which ==  13) {
        // ... do stuff ...
        e.preventDefault();
    }
});

你应该在两个函数中都这样做。我不确定为什么第一个不刷新页面;我猜你有一个提交按钮,而不是另一个?