为什么这段代码不起作用?
http://sandbox.phpcode.eu/g/5db40.php
<form>
<textarea></textarea>
</form>
<script>
$(function(){
$("textarea").keydown(function(e){
if (e.keyCode == 9){
$("textarea").selectionStart.append(" ");
e.preventDefault();
}
});
});
</script>
你必须在textarea上按TAB
问题是它没有/附加四个空格并且它默认浏览器操作(切换到Chrome中的地址选项卡)
思想?
答案 0 :(得分:3)
与this问题相关,请尝试:
$(function () {
$("textarea").keydown(function (e) {
if (e.keyCode == 9) {
e.preventDefault();
var $this = $(this);
var pos = $this[0].selectionStart;
$this.val($this.val().substring(0, pos) + " " + $this.val().substring(pos));
$this.setCursorPosition(pos + 4);
}
});
});
从this帖子中添加JQuery。
new function($) {
$.fn.setCursorPosition = function(pos) {
if ($(this).get(0).setSelectionRange) {
$(this).get(0).setSelectionRange(pos, pos);
} else if ($(this).get(0).createTextRange) {
var range = $(this).get(0).createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
}(jQuery);
答案 1 :(得分:1)
为了在jQuery中操作textarea选择和插入位置,我建议使用my jQuery plug-in来执行此操作,这适用于所有主流浏览器,并提供获取和设置插入符/选择位置的方法,在插入位置插入内容和更多。你想要的代码是:
$("textarea").keydown(function(e) {
if (e.keyCode == 9) {
e.preventDefault();
$(this).replaceSelectedText(" ");
}
});
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试这个,我确定它会起作用。
<form>
<textarea></textarea>
</form>
<script>
$(function(){
$("textarea").keydown(function(e){
if (e.which == 9){
$("textarea").append(" ");
return false;
}
});
});
</script>
我只是简单地将“keyCode”改为“which”,因为word key来源于jquery ui。
答案 4 :(得分:0)
var range = $(this).get(0).createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
这个(JSFiddle)是我能管理的最好的,但我无法让它在Firefox或Chrome上运行。如果有人设法获得按钮按下选择文本textarea与Chrome工作,请随时告诉我。