jQuery将光标移动到文本输入的末尾

Posted

技术标签:

【中文标题】jQuery将光标移动到文本输入的末尾【英文标题】:jQuery move cursor to end of text input 【发布时间】:2011-11-08 05:39:24 【问题描述】:

目前我有一个输入框,其值为“当前网站”

当他们点击它时,我运行这个函数:

function clearMeHttp(formfield) 
    if (formfield.defaultValue == formfield.value) 
        formfield.value = "http://";
    
;

如果您单击该框,它可以正常工作,但是如果您进入该框,它只会突出显示“http://”这个词,这会破坏它的目的,除非他们按下我想要避免的右箭头键。

谢谢!

这是另一个代码:<input onblur="restoreMe(this)" onfocus="clearMeHttp(this)" type="text" class="fade" name="website" value="Current website">

restoreMe 只是用 jquery 将默认值淡化回来

【问题讨论】:

你在哪个事件上调用了这个函数? <input onblur="restoreMe(this)" onfocus="clearMeHttp(this)" type="text" class="fade" name="website" value="Current website"> 我不确定,但您必须为此使用 setselectionrange 函数。 【参考方案1】:

我稍微修改了你的代码,但是使用 jquery 事件而不是内联 html

使用的完整脚本:

var defaultVal = 'Current website';
$(function() 

    $('.urlCheck').focus(function(e) 
        if ($(this).val() == "http://" || $(this).val() == '' || $(this).val() == defaultVal) 
            $(this).val('http://');
            $(this).select(false);

        
    );

    $('.urlCheck').keyup(function(e) 
        if ($(this).val() == "http://" || $(this).val() == '' || $(this).val() == defaultVal) 
            $(this).val('http://');
        
    );

    $('.urlCheck').blur(function(e) 
        $(this).val(defaultVal);
    );

);

工作链接:http://jsfiddle.net/29gks/6/

keyup 事件是 Chrome 和 Safari 的覆盖

【讨论】:

让我知道它是否适合您.. 忙着寻找适用于 Chrome/Safari 的有效取消选择解决方案。 是否可以在他们进入框中并在显示 http:// 之后模仿右箭头功能?我不介意他们是否可以删除它或其中的任何一个(如果他们真的想要他们可以退格)。只要它不突出我很高兴。禁用标签并不理想 :) 这实际上是我目前正在查看的内容。会尽快通知您。 我已经更新了我的答案。使用 keyup 事件并设置值修复了 Chrome/Safari 问题。【参考方案2】:

你没用过jquery,所以我跟着你。

脚本:

function clearMeHttp(formfield) 
    if (formfield.defaultValue == formfield.value)  
         formfield.value="";        
         formfield.style.padding="0 0 0 40";
         document.getElementById("http").style.display="block";
    
; 

html:

<label id="http" style="float:left;position:absolute;display:none;">http://</label>
<input onblur="restoreMe(this)" onfocus="clearMeHttp(this)" type="text" class="fade" name="website" value="Current website">

这符合您的要求,但可能不是您想要的方式

【讨论】:

抱歉,我标记了 jquery,因为我认为其中可能内置了一个函数来简化它。不幸的是,我已经使用了很多标签,所以它必须没有那个方法。【参考方案3】:

您需要在大多数浏览器上使用setSelectionRange()(或selectionStartselectionEnd),在IE TextRange 恶作剧。

这是我之前对同一问题的回答:How to place cursor at end of text in textarea when tabbed into

【讨论】:

以上是关于jQuery将光标移动到文本输入的末尾的主要内容,如果未能解决你的问题,请参考以下文章

UITextview 光标移动到行尾

jQuery文本框输入格式限制valueChange replace光标移动问题

怎么用快捷键将光标快速移动或者切换到要输入文字的地方

如何将光标移动到内容可编辑实体的末尾

有没有办法在编辑时将 TextField 的光标移动到文本的末尾?- SwiftUI

将光标放在用户触摸的 UITextView 上