2016-09-13 2 views
0

Also habe ich eine benutzerdefinierte Textfeld-Direktive (es enthält ein Eingabefeld).Wie kann ich das Ergebnis eines Einfügevorgangs ändern?

<custom-textbox ng-paste=pasteFn($event)></custom-textbox> 

Wenn der Benutzer Treffer einfügen, will ich sanieren, was eingefügt wurde (entfernt Sonderzeichen +, um die String-Länge reduziert).

Ich habe versucht, in das Event-Objekt zu suchen, und es sieht ziemlich groß aus, so dass ich mir nicht sicher bin, wie diese Zeichenfolge am besten zu ändern ist.

+0

Sie nicht können. Sie müssen die Paste erlauben und dann das Ziel aufräumen. – dandavis

+0

Was wäre ein guter Weg für mich, das Aufräumen dann zu machen? Die PasteFn() wird aufgerufen, bevor die Paste tatsächlich passiert. Was wäre eine gute Möglichkeit für mich, etwas zu nennen, nachdem die Paste passiert ist? – user1413969

+0

ein setTimeout von vor dem Einfügen sollte funktionieren, und sollte ausgelöst werden, bevor der Benutzer mit einem XSS interagieren kann. – dandavis

Antwort

1

die Daten aus der Zwischenablage holen und es zu einem Paste-Funktion wie folgt an:

 <input ng-paste="clean($event.clipboardData.getData('text/plain'))" placeholder='paste here' ng-model="paste"> 
pasted: {{paste}}<br> 
new string: {{myString}} 

Dann in Ihrem Controller:

$scope.clean = function(e){ 
    var str = e; 

$scope.myString = str.replace(/[^a-zA-Z ]/g, ""); 
    } 

Hier ist ein Plunker

Verwandte Themen