如何正确地改变输入形式的值,以便注意到"更改"事件?

时间:2016-01-07 18:59:10

标签: javascript jquery

我试图在动态创建的字段中为输入额外符号创建键盘。我使用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);
    });

1 个答案:

答案 0 :(得分:0)

设置值后调用.change()

lastFocus.val(lastFocus.val().insertAt(pos, $(this).text().trim()));
$(lastFocus).change(); //this line