使用此主题: jQuery Set Cursor Position in Text Area
我编写此代码但它不起作用:
<input id="myTextInput" type="text" value="some text2">
<input type="button" value="set mouse" id="btn" />
和
$(document).ready(function () {
$('#btn').on('click', function () {
var inp = $('#myTextInput');
var pos = 3;
inp.focus();
if (inp.setSelectionRange) {
inp.setSelectionRange(pos, pos);
} else if (inp.createTextRange) {
var range = inp.createTextRange();
range.collapse(true);
if (pos < 0) {
pos = $(this).val().length + pos;
}
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
});
});
我的错误在哪里? 感谢
答案 0 :(得分:2)
您的错误是您选择了jQuery对象而不是DOM元素:将var inp = $('#myTextInput');
替换为var inp = $('#myTextInput')[0];
。
但是,我建议使用this answer中的插件,因为代码看起来更干净:
$.fn.selectRange = function(start, end) {
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
$(document).ready(function() {
$('#btn').on('click', function() {
var pos = 7;
$('#myTextInput').focus().selectRange(pos, pos);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myTextInput" type="text" value="some text2">
<input type="button" value="set mouse" id="btn" />
答案 1 :(得分:0)
您需要使用DOM元素而不是JQuery对象才能使用setSelectionRange
或createTextRange
。
使用.get(0)
进行检索。
var inp = $('#myTextInput');
inp.focus();
inp = inp.get(0);