我试着用JavaScript替换方法来制作翻译器,它运行得很好。我的问题是如何在文本框中停止滚动到结束,因为当我在文本框中键入某项内容时,它将被替换,光标将转到word的末尾。因此,我不能在某些词之间替换或键入。
HTML代码:
<form name="inputform">
<input class="Search" type="text" autofocus name="searchbox" onKeyUp="transcrire()" id="Search">
</form>
JavaScript代码:
var inp;
function transcrire() {
inp = document.inputform.searchbox.value;
inp = inp.replace(/a/g, "B");
inp = inp.replace(/i/g, "D");
document.inputform.searchbox.value=inp;
}
当我在文本框上输入"a“时,它将被替换为"B”。当我在文本框上输入"i“时,它将被替换为"D”。如果你能用JavaScript和JQuery给我答案的话。只能使用此文本框,不能使用其他按钮或其他东西。
发布于 2016-09-29 08:55:39
只需获得初始目标位置,并将位置设置为用regex替换后的位置。
var inp;
$('#Search').on('keyup',function(e){
var target = e.target,
position = target.selectionStart;
inp = $(this).val();
inp = inp.replace(/a/g, "B");
inp = inp.replace(/i/g, "D");
$(this).val(inp);
$(this).get(0).setSelectionRange(position, position );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="inputform">
<input class="Search" type="text" autofocus name="searchbox" id="Search">
</form>
发布于 2016-09-29 08:24:11
下面是我从这篇文章中得到的一个例子:Set keyboard caret position in html textbox
function setCaretPosition(elemId, caretPos) {
var elem = document.getElementById(elemId);
if(elem != null) {
if(elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if(elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
}
else
elem.focus();
}
}
}
发布于 2016-09-29 08:32:00
var inp;
$('#Search').on('keyup',function(e){
inp = $(this).val();
inp = inp.replace(/a/g, "B");
inp = inp.replace(/i/g, "D");
$(this).val(inp);
$(this).get(0).setSelectionRange(0, 0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="inputform">
<input class="Search" type="text" autofocus name="searchbox" id="Search">
</form>
https://stackoverflow.com/questions/39775344
复制相似问题