我有一个输入元素,我想要做的是当用户输入时,这个静态文本将始终出现在用户输入之后。
h "staticTextHere"
hello "staticTextHere"
hello world "staticTextHere"
我尝试了一些技巧,但这里有很多问题。有什么想法如何实现这个目标?
这是我的代码;
<input type="text" id="staticTextId" name="staticTextName" ..... />
和js;
.on('keydown', function (event) {
var textLength = document.getElementById($id).value.length;
document.getElementById($id).value = document.getElementById($id).value.substr(0,textLength - staticText.length) + staticText;
});
答案 0 :(得分:1)
误解了这个问题,现在我得到了 - 这有效但同意@lolka_bolka - 有很多可能出错的地方
<input type="text" id="staticTextId" name="staticTextName" onkeyup="appendInput();" />
function appendInput(){
var el = document.getElementById('staticTextId');
var pos = doGetCaretPosition (el)
if(el.value){
var yourText = ' your text'
if(el.value.indexOf(yourText)<1){
el.value = el.value + yourText;
}
setCaretPosition(el, pos)
}
}
function doGetCaretPosition (ctrl) {
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
function setCaretPosition(ctrl, pos){
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
答案 1 :(得分:1)
普通JS版:Demo online
jQuery:Demo online
document.getElementById("staticTextId").addEventListener('keyup', function(){
var str = this.value;
var suffix = " static text";
if(str.search(suffix) === -1){
str += suffix;
}
var actualLength = str.length - suffix.length;
// set the value
this.value = str.substr(0,actualLength) + suffix;
// set cursor position
this.setSelectionRange(actualLength,actualLength);
});
答案 2 :(得分:0)
我已经用你的文字尝试了它,只有当文字不在那里并且用户离开元素(模糊)并且得到它时才会添加它:
脚本js:
function makeStatic(elem) {
var staticText = "staticTextHere"
if(elem.value.indexOf(staticText)==-1) {
elem.value = elem.value + " " + staticText;
}
}
HTML:
<input type="text" id="staticTextId" name="staticTextName" value="" onblur="makeStatic(this);">
希望这是你在寻找的东西