2017-11-02 1 views
-1

Ich habe eine iOS-App in Swift, die eine Webansicht lädt (Link zu einem Formular). Dann kann der Benutzer ein Eingabefeld auswählen und die Scan-Taste drücken, um einen Barcode zu scannen. Ich sammle das document.activeElement und führe eine andere Funktion aus, die den Wert des Eingabefeldes auf den gescannten Barcode setzt. Hier ist mein JavaScript Code: -Javascript nicht den Wert des Eingabefeldes einstellen

//before scanning the barcode 
myWebView.stringByEvaluatingJavaScript(
    from: "var abc = document.activeElement;" 
) 

//after the barcode is scanned 
myWebView.stringByEvaluatingJavaScript(
    from: "function fillText(myValue){ 
     if(document.selection){ 
      abc.focus(); 
      sel = document.selection.createRange(); 
      sel.text=myValue; 
     } else if(abc.selectionStart||abc.selectionStart == '0'){ 
      var startPos = abc.selectionStart; 
      var endPos = abc.selectionEnd; 
      abc.value = abc.value.substring(0,startPos)+ myValue + abc.value.substring(endPos, abc.value.length); 
      abc.selectionStart = startPos + myValue.length; 
      abc.selectionEnd = startPos + myValue.length; 
     }else{ 
      abc.value += myValue; 
     } 
    }" 
) 

Aber das Eingabefeld ist nicht korrekt ausgefüllt. Wenn der Benutzer das Formular abschickt, wird es leer, es sei denn, es wird etwas eingegeben. Ich habe auch ein paar Screenshots beigefügt. Wir können sehen, dass der Text eine Ebene über dem Platzhalter erstellt. Vielleicht stimmt etwas mit meinem JavaScript nicht. screenshot of the app

Here is the screenshot when I tried to edit the source

+0

So Im Screenshot ich den Text in grau sehen " Ihre Antwort "unter den # s. Das ist es, was du versuchst loszuwerden? –

+0

Können Sie Elemente an der Stelle überprüfen, an der der # und der Platzhaltertext vorkommen, und den HTML-Code posten oder einen Screenshot des HTML-Codes erstellen? –

+0

das Formular wird von Google gemacht. Ich injiziere einfach das javaScript. Es wird nicht nur den Platzhalter los. Wenn ich diese Antworten einreiche, komme ich nicht zu mir. Es kommt nur als ein leeres Feld. –

Antwort

1

yo Shez,

Also normalerweise debuggen i-Websites nicht Telefon apps, ich weiß nicht, wie/ob es einen Weg gibt, den rohen html oder Dingsbums der Telefon-App zu inspizieren.

Ich habe von ähnlichen Problemen mit Websites gelesen, die mehrere überlappende Eingabefelder verwenden dann machen es wie nur 1 Eingabefeld aussehen. Das ist meine beste Schätzung, was das Problem Sie haben. Irgendwie füllen Sie den Wert eines Eingabefeldes, aber es gibt ein zweites Eingabefeld, das Ihren Wert nicht erhält und den Wert nicht weitergibt, wenn das Formular gesendet wurde.

Beispiel: Gehen Sie zu Facebook und in das Suchfeld ein, wenn Sie: Rechtsklick> inspizieren Elemente: enter image description here

Sie werden sehen, es gibt mehrere < input> Elemente, nicht nur 1:

enter image description here

Wenn wir dann mit diesem Code auf der Konsole die .value des sekundären Eingabefeld füllen: document.getElementsByClassName('_5eay')[0].value = "VVVV"

es Überschneidungen mit dem Haupteingang Platzhalter-Text

enter image description here

jedoch, wenn wir die .value des Haupteingangs feld mit diesem Code auf der Konsole zu füllen: document.getElementsByClassName('_1frb')[0].value = "shez"

Der Platzhalter Text geht weg:

enter image description here

1 Weg, dies zu vielleicht testen, ist in Ihrem Code versuchen, die Textfarbe Einstellung des Eingabefeldes pink Sie ändern:

}else{ abc.style='color:pink' abc.value += myValue; }

Dann, wenn Sie ein paar Zeichen manuell in das Feld eingeben hinzufügen , bleibt der Text nach dem Einscannen des Barcodes pink?

Edit: Hier sind die 2 getrennten Elemente 1 ist das Eingabefeld ein und ist ein div, die den 'Ihre Antwort' Text hat: enter image description here

+1

Hier ist ein Link zu meinem Formular https://docs.google.com/forms/d/e/1FAIpQLSc0G2fYgynCcZMWbvYGJV3xA4dLdrZRpPpKbt_BwMP2L8muOw/viewform?usp=sf_link –

+0

Der Text wurde nie rosa, aber wann Ich gebe manuell 1 Zeichen ein, nachdem die gescannte Zeichenfolge den Platzhalter entfernt hat. –

+0

Danke @NickTimmer. Ich habe die Frage editiert und füge das Bild am Ende hinzu, bitte schau dir das an, da ich dort nur ein Eingabefeld sehe. –

Verwandte Themen