【问题标题】:Focus input field with JQuery without selecting current value text使用 JQuery 聚焦输入字段而不选择当前值文本
【发布时间】:2010-12-17 22:25:30
【问题描述】:
$("#myinputfield").focus();

在已设置值的输入字段上执行此操作会导致选择当前值。如何在不选择文本的情况下聚焦字段?

【问题讨论】:

  • 您为什么要这样做?如果您选择一个字段,它也会被选中。这是标准的用户行为。您希望插入符号在哪里? (正文开始?正文结束?)
  • @Phrogz 它的行为方式可能与 textareas 现在的行为方式相同(使用 Tab 键时不会选择内容)。跨浏览器不一样,但只要它是一致的..

标签: javascript jquery html forms


【解决方案1】:

我搜索了一下,发现您应该在关注后将您的值重新设置为所需的字段。

【讨论】:

【解决方案2】:

像这样在聚焦后将输入字段的值设置为自身的方法怎么样?

$("#myinputfield").focus().val($("#myinputfield").val());

【讨论】:

    【解决方案3】:

    其他答案建议在聚焦后将输入字段的值设置为自身。如果在 Firefox 中,光标出现在输入的开头,而您希望它在结尾,则需要稍作修改。您必须先将值设置为空,然后再将其设置为之前的值。

    var value = $("#myinputfield").val();
    $("#myinputfield").focus().val('').val(value);
    

    【讨论】:

      【解决方案4】:

      你试过了吗?

      var txt = $("#myinputfield").val();
      $("#myinputfield").focus();
      $("#myinputfield").val( txt );
      

      【讨论】:

        【解决方案5】:
        function focusField(id){
            var inputField = document.getElementById(id);
            if (inputField != null && inputField.value.length != 0){
                if (inputField.createTextRange){
                    var FieldRange = inputField.createTextRange();
                    FieldRange.moveStart('character',inputField.value.length);
                    FieldRange.collapse();
                    FieldRange.select();
                }else if (inputField.selectionStart || inputField.selectionStart == '0') {
                    var elemLen = inputField.value.length;
                    inputField.selectionStart = elemLen;
                    inputField.selectionEnd = elemLen;
                    inputField.focus();
                }
            }else{
                inputField.focus();
            }
        }
        

        【讨论】:

          【解决方案6】:
          $(document).ready(function() {
              var $field = $("#formloginusername"),
                  oldVal = $field.val();
              $field.focus().val('').val(oldVal);
          });
          

          演示:http://jsfiddle.net/X7Y8S/

          我从 ahren 在其他主题的回答中获取了代码和演示,我认为这很有帮助。

          【讨论】:

            【解决方案7】:

            这个解决方案非常适合我:

            $("#myinputfield").focus(function (event) {
              var value = $("#myinputfield").val();
              setTimeout(function() {
                $("#myinputfield").val(value);
              },10);
            });
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-07-19
              • 2017-09-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-18
              • 1970-01-01
              相关资源
              最近更新 更多