2016-08-02 54 views
0

這是我的代碼,ev.pageX事件不起作用。我不理解爲什麼如此。但是,它使用click事件。這裏使用的事件是keypress事件,我在尋找ev.pageX的值,所以我可以根據文本框中的格式設置CSS絕對參數。pageX和pageY與jQuery按鍵事件不起作用

需要幫助!

<head> 

    <style> 
    textarea{ 
    width:300px; 
    height:300px; 
    } 

.popup{ 
    position:absolute; 
    border:1px solid gray; 
} 
</style> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 

<body> 

<textarea></textarea> 

<script> 
    $(function() { 
     var $popup = $('<select/>', { 
      'html': 'popup' 
     }) 
      .addClass('popup') 
      .appendTo('body') 
      .append($('<option/>').html('lala'), 
        $('<option/>').html('blabla')) 
      .change(function() { 
       $(this).fadeOut(); 
      }) 
      .hide(); 



     $('textarea').keypress(function(ev) {    
      if ($popup.is(':visible')) { 
       $popup.fadeOut(); 
      } else { 
       if (ev.keyCode === 32) { 
        console.log('pressed');    

        ev.preventDefault() 
        var pagex = ev.pageX;        
        console.log(pagex); 

        $popup.css({ 
         'left': ev.pageX + 10, 
         'top': ev.pageY - 10 
        }); 


        $popup.fadeIn(); 

        console.log('working'); 
       } 
       }     


     }); 



    }); 
</script> 
</body> 

+0

'pageX'和'pageY'是用於鼠標事件的,而不是我認爲的鍵盤事件。 – gcampbell

回答

0

您對ev參考是按鍵事件,而pageX屬性和pageY保留鼠標事件。

您可能會在鼠標移動時跟蹤鼠標座標,將值分配給全局,然後將彈出窗口放在最後記錄的全局值上。然而,這可能是過度的資源密集型,取決於你的用例。