2012-10-04 24 views
5

我有困難的時候用的keydown,並停止傳播jQuery的觸發器()和stopPropagation()上keydown事件

我不希望我的頁面刷新,我已經試過所有可能的方法我能想到的,我目前的代碼是

<script> 
$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER }); 

$('#id_number').trigger(e, function(event){ 
event.preventDefault(); 
event.stopPropagation(); 
}); 

}); 
</script> 

任何想法,我在做什麼錯在這裏?我認爲該事件是正確的叫,我有jQuery和jQuery UI的正確鏈接,並沒有收到控制檯錯誤

UPDATE 以及它的工作,現在即時通訊越來越 Property對象功能(A,B的「事件」 ){返回新e.fn.init(A,b,H)}不是在下面的代碼的函數 錯誤

$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER } , function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$('#id_number').trigger(e); 

}); 

更新#2 - 固定

事我學會

  1. 觸發()不需要的文件(準備好)在
  2. 得到$ .ui.keyCode工作是困難的(至少對我來說)
  3. 總能看到連接到輸入什麼其他功能(的onblur,聚焦狀態,ECT)又稱衛生署

它改寫了這一點,工作完全正常

$(document).ready(function() { 
    $('#id_number').keydown(OnKeyDown); 
});  

function OnKeyDown(e){ 
var code = (e.keyCode ? e.keyCode : e.which); //to support both methods 
if(code == 13) { //the Enter keycode 

    //my actions 
return false; 
} 
} 
+0

你嘗試'返回FALSE'? – TheZ

+0

爲什麼你認爲'event'函數(*你必須改變爲'Event',大寫E *)需要第三個參數?根據文檔,它只需要兩個參數。第一個是事件類型,第二個是具有事件屬性的對象。 –

+0

因爲我在想愚蠢嗎?弄糊塗了,對不起,你的回答是對的,我只是不能讓它工作,直到我重寫了代碼 –

回答

7

代碼停止默認動作一定要去元素,該事件適用於..

$('#id_number').keydown(function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

.trigger()秒參數是extraParameters

+0

謝謝,把stopPropagation和preventDefault放在了keydown事件上,更新了我的問題與答案,非常感謝,美麗 –