2016-09-29 4 views
0

Ich habe versucht, Übersetzer mit JavaScript ersetzen Methode und es funktioniert gut. Meine Frage ist, wie man das Scrollen bis zum Ende auf dem Textfeld stoppt, weil, wenn ich etwas in das Textfeld einfüge, es ersetzen wird und der Cursor zum Ende des Wortes gehen wird. Daher kann ich einige Wörter nicht ersetzen oder eintippen.JavaScript ersetzen Methode Stop Scrollen bis Ende

HTML-Code:

<form name="inputform"> 
<input class="Search" type="text" autofocus name="searchbox" onKeyUp="transcrire()" id="Search"> 
</form> 

JavaScript-Code:

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; 
} 

Als ich "a" auf Textfeld eingegeben, wird es auf "B" ersetzen. Wenn ich "i" in Textfeld eingab, wird es zu "D" ersetzen. Wenn Sie mir bitte Antwort in JavaScript und JQuery geben können. Nur kann dieses Textfeld keine andere Schaltfläche oder etwas anderes verwenden.

Antwort

0

einfach die anfängliche Zielposition erhalten und die Position zurück, wo es nach dem Austausch mit regex war .

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>

+0

Danke. Bitte wie mein Zitat anderen weise werde ich blockieren. Danke nochmal – user43153

0

Heres ein Beispiel, das ich aus dieser SO Post bekam: 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(); 
     } 
    } 
} 
+0

Wie Position berechnen? Wenn ich etwas Cursor automatisch eingegeben habe, gehe zum Ende auf Textfeld. – user43153

0

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>

+1

Dieser Code-Cursor wird an den Anfang des Textfelds gesetzt. Ich will es nicht. Zum Beispiel, wenn ich BBBDDD eintippte und ich wieder "a" zwischen BBB "a" DDD eintippe. daher wird das Ergebnis BBBBDDD sein und der Cursor sollte in BBBB_DDD sein. – user43153

Verwandte Themen