我正在尝试仅获取用户选择的输入字符串的选定部分。假设我有这样的意见:
<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”和文本输入中都有效。
答案 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("");
});
});
答案 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" />
所以我终于明白了。感谢大家的投入!