我正在创建一个Cordova PhoneGap应用程序,输入字段有问题。
我使用isroll来滚动和刷新。
突然我的输入字段没有响应。所以当用户启动应用程序时,他们甚至无法登录。
我使用标准字段,我不能给输入字段焦点。即使在包装器中我设置了"[input].focus()"
html代码
<input class="newinput" onclick="this.focus();" type="email" id="email" name="email" value="" autocorrect="off" autocapitalize="off" required="" placeholder="Enter E-mail address">
CSS
.newinput {
width: 100%;
border: none;
padding: 0;
margin: 3px 0px 1px 0px;
background: white;
font-size: 16px;
color: #43ACDB;
z-index: 40;
}
其他样式是(发现与chrome开发控制台)
-webkit-writing-mode: horizontal-tb;
font: -webkit-small-control;
letter-spacing: normal;
word-spacing: normal;
text-transform: none;
text-indent: 0px;
text-shadow: none;
display: inline-block;
text-align: start;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-appearance: textfield;
-webkit-rtl-ordering: logical;
-webkit-user-select: text; // tried without this line too
cursor: auto;
输入字段以前工作过,但突然没有一个可以得到关注。不幸的是,当它们停止工作时,我没有,因为我有自动登录,所以我不使用大多数应用程序功能的输入字段。
我已经检查了所有的js和css代码,并没有得到一个单行开始"-webkit-user"(除了调试)
如果我在mac上的浏览器上打开index。html代码可以正常工作但是android模拟器和iphone, android和ipad上的浏览器有这个错误
我还能做些什么来让输入再次工作?
Ok找到答案了。奇怪的是,这是一个自2010年以来一直存在的滚动错误。
使用以下设置:useTransform和onbeforecrollstart。例如
myScroll = new iScroll(
'wrapper', /** Change this to match your container ID **/
{
useTransform: true,
onBeforeScrollStart: function (e) {
var target = e.target;
while (target.nodeType != 1) {
target = target.parentNode;
}
if (target.tagName != 'SELECT' && target.tagName != 'INPUT'
&& target.tagName != 'TEXTAREA'
) {
e.preventDefault();
}
}
/** Add Any Additional Settings here **/
}
);