将方括号()附加到输入字段并将光标放在它们之间

时间:2013-02-07 18:00:09

标签: javascript jquery query-builder

使用ornot()运算符组合一个非常基本的查询构建器。我将它们附加到输入字段虽然我认为如果将括号操作符按钮附加到输入字段时,对于用户查询,光标将被放置(here),这对用户是有益的。

到目前为止,我有:

   // query builder functions
$(function() {
  var queryinput = $( "#query-builder-modal .search-box input.querybuilder" );

  $('#query-builder-modal ul.operators li.or').click(function(){
    queryinput.val( queryinput.val() + "OR" );
    queryinput.focus();
  });

  $('#query-builder-modal ul.operators li.not').click(function(){
    queryinput.val( queryinput.val() + "-" );
    queryinput.focus();
  });

  $('#query-builder-modal ul.operators li.brackets').click(function(){
    queryinput.val( queryinput.val() + "()" );
    queryinput.focus();
  });
});

任何人都可以帮助我在此示例代码的第三次单击功能中的括号之间设置光标吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

$('#query-builder-modal ul.operators li.brackets').click(function(){
    queryinput.val( queryinput.val() + "()" );
    var pos = queryinput.val().length - 1;
    myInput.focus(); /* Seems mandatory for Firefox/Opera */
    queryinput[0].selectionStart = queryinput[0].selectionEnd = pos;
});

jsfiddle example here

编辑:似乎对于Firefox和Opera,您必须首先focus()输入,但不能访问Safari和Chrome。我更新了代码和jsfiddle。