Stoppen Sie den Cursor vom Springen bis zum Ende des Eingabefelds in Javascript ersetzen

  • Ich verwende einen regulären Ausdruck, um ungültige Zeichen aus einem Texteingabebereich in Javascript (das in IE ausgeführt wird) zu entfernen. Ich führe die Ersetzungsfunktion bei jedem Keyup-Ereignis aus. Dadurch springt der Cursor jedoch nach jedem Tastendruck an das Ende des Textfelds, wodurch Inline-Bearbeitung nicht möglich ist.

    Hier ist es in Aktion:

    http://jsbin.com/ifufuv/2

    Weiß jemand, wie man das macht, damit der Cursor nicht bis zum Ende springt das Eingabefeld?

    22 November 2011
    Petey B
2 answers
  • Sie müssen den Cursor manuell an die gewünschte Stelle setzen. Für IE9 setzen Sie .selectionStart und .selectionEnd (oder verwenden Sie .setSelectionRange(start, end)). Für IE8 und frühere Versionen verwenden Sie .createTextRange() und rufen Sie im Textbereich .moveStart() auf.

    22 November 2011
    gilly3
  • Ich hatte das gleiche Problem. Ich habe https: / gefunden. /www.sitepoint.com/6-jquery-cursor-functions/ hatte die Lösung. Es gibt 6 Methoden, mit denen Sie die Cursorposition in einem Eingabe- / Textbereich ermitteln bzw. festlegen können. Ich glaube, das funktioniert auch für inhaltsbearbeitbare Felder!

    Dies war sehr hilfreich, da der Fehler nur für IE und Windows 7-Kombination angezeigt wurde.

    Hier ist mein Vorher-Code

     $body.on('input paste','.replace-special-chars',function () {
        let coma = /‚/g;
        let doubleQuotes = /[“”]/g;
        let singleQuotes = /[‘’]/g;
        $(this).val($(this).val().replace(doubleQuotes,'"'));
        $(this).val($(this).val().replace(coma,','));
        $(this).val($(this).val().replace(singleQuotes,"'"));
        $(this).val($(this).val().replace(/[^\x00-\xff]/g, '- '));
    }); 
      

    und mein After-Code, der die Jquery-Methoden verwendet, die ich auf der oben angegebenen Website gefunden habe

      $ body.on ('input paste', '. replace-special-chars ', function () {
     let position = $ (this) .getCursorPosition (); 
     let coma = / ‚/ g; 
     let doubleQuotes = / [“ ”] / g ; 
     lassen Sie singleQuotes = / [''] / g; 
     $ (this) .val ($ (this) .val (). ersetzen Sie (doubleQuotes, '' ')); 
     $ (this ) .val ($ (this) .val (). replace (com
                                        
    28 July 2018
    Mike