我在swift中创建了一个iOS应用程序,它加载了一个webview(链接到一个表单)。然后,用户可以选择输入字段并点击扫描按钮来扫描条形码。我收集document.activeElement并运行另一个函数,该函数将输入字段的值设置为扫描的条形码。这是我的javascript代码: -
//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;
}
}"
)
但输入字段未正确填充。当用户提交表单时,除非输入内容,否则它将变为空。我也附上了一些截图。我们可以看到文本在占位符上创建了一个图层。也许我的JavaScript出了问题。screenshot of the app
答案 0 :(得分:1)
哟Shez,
所以我通常调试网站而不是手机应用程序,我不知道如何检查原始html或手机应用程序的方式。
我已经阅读了与网站类似的问题,使用多个重叠输入字段,然后使其看起来只有1个输入字段。这是我最好的猜测你有什么问题。不知何故,您正在填充输入字段的值,但是有一个第二个输入字段没有得到您的值,并且在表单提交时没有传递该值。
实施例: 如果您执行以下操作,请转到Facebook和搜索框:右键单击>检查元素:
你会看到有多个<输入> 元素,而不仅仅是1:
如果我们在控制台上使用此代码填充辅助输入字段的.value:
document.getElementsByClassName('_5eay')[0].value = "VVVV"
它与主输入占位符文本重叠
但是,如果我们在控制台上使用此代码填充主输入feld的.value:
document.getElementsByClassName('_1frb')[0].value = "shez"
占位符文字消失了:
可能测试此方法的一种方法是在您的代码中尝试将文本颜色设置为您要更改的输入字段的粉红色:
}else{
abc.style='color:pink'
abc.value += myValue;
}
然后,如果你在字段中手动输入几个字符,在扫描条形码后,文字会保持粉红色吗?