这是我的代码:
$( '#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
}
as'。'不是由事件创建的,而是由我手动创建,.on( 'input', anotherFunction() )
事件未被触发。
最后,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();
}
}
有什么建议吗?
提前致谢!
答案 0 :(得分:0)
您的第一个功能问题是event.preventDefault();
应该是keyEvent.preventDefault();
,因为事件未定义:
$( '#Example' ).on( "keypress", function( keyEvent ) {
if ( keyEvent.which != 44 ) {
myFunction( keyEvent, $(this) );
} else {
keyEvent.preventDefault();
var myEvent = jQuery.Event( "keypress" );
myEvent.which = 46;
$(this).trigger( myEvent );
}
});
答案 1 :(得分:0)
我认为您不需要再次触发事件,而是将更改后的值传递给函数。像这样:
$( '#Example' ).on( "keypress", function( event ) {
var key = event.which;
myFunction( key !== 44 ? 46 : key, $(this), event );
});
function myFunction(key, element, event) {
var text = element.val();
if (((key !== 46 || text.indexOf('.') !== -1) &&
((key < 48 || key > 57) &&
(key !== 0 && key !== 8))) ||
((key === 46) && (text.indexOf('.') === -1) &&
((text.length - element[0].selectionStart) > 2))) {
event.preventDefault();
}
if ((text.indexOf('.') != -1) &&
(text.substring(text.indexOf('.')).length > 2) &&
(key !== 0 && key !== 8) &&
(element[0].selectionStart >= text.length - 2)) {
event.preventDefault();
}
}