發射相同的「按鍵」事件這是我的代碼:功能可與「按鍵」事件,但不同意我
$('#Example').on("keypress", function(keyEvent) {
if (keyEvent.which != 44) {
myFunction(keyEvent, $(this));
} else {
event.preventDefault();
var myEvent = jQuery.Event("keypress");
myEvent.which = 46;
$(this).trigger(myEvent);
}
});
function myFunction(event, element) {
//do stuff
console.log("Finished.");
}
如果按「」 (which = 46
),myFunction
完美填補,事件「。」是輸入的。但如果按「」,「(which = 44
),myFunction
也做東西,但事件」。「手動發射不是輸入!在這兩種情況下,控制檯都會打印「完成」。
我需要在以前的方式做,因爲如果我這樣做如下:
$('#Example').on("keypress", function(keyEvent) {
myFunction(keyEvent, $(this));
});
function myFunction(event, element) {
if (event.which == 44) {
event.which = 46;
}
//do stuff
event.preventDefault();
$('#Example').val('.'); //is a example
}
爲「」不是由事件創建的,而是由我手動創建的,事件不會被觸發。
最後,myFunction
情況如下:
function myFunction(event, element) {
var text = element.val();
if (((event.which != 46 || element.val().indexOf('.') != -1) &&
((event.which < 48 || event.which > 57) &&
(event.which != 0 && event.which != 8))) ||
((event.which == 46) && (element.val().indexOf('.') == -1) &&
((text.length - element[0].selectionStart) > 2))) {
event.preventDefault();
}
if ((text.indexOf('.') != -1) &&
(text.substring(text.indexOf('.')).length > 2) &&
(event.which != 0 && event.which != 8) &&
(element[0].selectionStart >= text.length - 2)) {
event.preventDefault();
}
}
有什麼建議?
在此先感謝!
事實上,應該是keyEvent而不是事件,但我犯了一個錯誤重寫代碼在這裏試圖做到這一點更容易理解。我應該修改主要帖子嗎?非常感謝您的回覆! –
無憂!您的myFunction正在調用每個按鍵事件,如果它的44則會調用myFunction和46。您現在想要做什麼? –