我可以在文本表单输入中检索用户选择的文本吗?

时间:2010-08-05 18:19:51

标签: jquery

我正在尝试仅获取用户选择的输入字符串的选定部分。假设我有这样的意见:

<input type="text" name="first_name" id="first_name" value="Enter your name" />

用户通过在文本字段中单击并拖动来选择“输入”单词。我可以用jQuery检索该文本吗?

我知道我可以通过这种方式获得全部价值:

$("#first_name").val();

但到目前为止,我还是没有找到只选择“输入”的部分。任何人都能指出我正确的方向吗?谢谢!

修改

我尝试了document.getSelection,它在Firefox上的静态文本元素(如“p”)上运行良好。到目前为止,它对我的​​文本输入无效。

在IE中,window.selection.createRange()。文本在“p”和文本输入中都有效。

4 个答案:

答案 0 :(得分:3)

应该能够使用jQuery的select函数和document.getSelection

来做到这一点

http://www.devguru.com/Technologies/ecmascript/quickref/doc_getselection.html http://api.jquery.com/select/

答案 1 :(得分:2)

This可能有所帮助。您需要使用.select()功能。

答案 2 :(得分:1)

您可以使用常规的javascript替换方法。

$("#first_name").val().replace("Enter your name", "")

查看示例:http://jsfiddle.net/gezDF/

但是,另一个选项可能是在用户输入字段时删除文本。这可以通过以下方式完成:

$(document).ready(function(){
    $("#first_name").focus(function () {
         $(this).val("");
    });
}​);​

查看示例:http://jsfiddle.net/JNmAF/

答案 3 :(得分:1)

好的,这是最后的答案。看起来我们在使用input或textarea时必须使用selectionStart和selectionEnd而不是getSelection()。这是我的测试代码:

$(".name").mouseup(function()
{
    var selected_text = "";
    if (window.getSelection) // Firefox
    {
        var text = $(this).val();
        selected_text = text.substring(document.activeElement.selectionStart, document.activeElement.selectionEnd);
    }
    else // IE
    {
        selected_text = document.selection.createRange().text;
    }
    alert(selected_text);
});

我的HTML很简单:

<input type="text" name="name" class="name" value="Enter your name" />

所以我终于明白了。感谢大家的投入!