我试图在动态创建的字段中为输入额外符号创建键盘。我使用on()函数来处理模糊和更改输入表单的事件。我想在插入符号位置输入特殊字符。是否可以在不使用全局变量的情况下实现它? 如果我通过键盘添加字母然后松散焦点或按回车键,或者如果我键入(字母然后是特殊字符)||,则会注意到更改(特殊字符,然后是特殊字符),不会失去模糊甚至按下输入。
// checking click targets
var clicky;
$(document).mousedown(function(e) {
clicky = $(e.target);
});
// handling dbclick and enter press
$(document).on("dblclick", "input#word", function (){
$(this).parent().parent().css('background-color', setOnEditColor);
$(this).prop("readonly", false);
$(this).keypress(function(e) {
if(e.which == 13) {
$(this).focusout();
}
});
});
// handling blur on input form
$(document).on("blur", "input#word", function (e){
lastFocus = $(this);
// checking if keyboardLetter element is clicked,
// if yes I want to keep focus on current input
if(clicky.attr('class') == 'keyboardLetter'){
return false;
}
$(this).prop("readonly", true);
$(this).parent().parent().css('background-color', setDefaultColor);
// $(this).trigger("change");
});
// onChange is triggered on blur
$(document).on("change", "input#word", function (){
saveChanges($(this).closest('tr').attr('id'), $(this).val(), 1);
});
//clicking on special characters
$(document).on("click", ".keyboardLetter", function (){
pos = $(lastFocus).caret(); //getting caret position of focused input
lastFocus.val(lastFocus.val().insertAt(pos, $(this).text().trim()));
$(lastFocus).caret(pos+1);
});
答案 0 :(得分:0)
设置值后调用.change()
:
lastFocus.val(lastFocus.val().insertAt(pos, $(this).text().trim()));
$(lastFocus).change(); //this line