我整天都在寻找一个可行的例子,但没有找到任何真正有效的东西。
我有一个简单的在线反馈表,我用 WebView 设置了它,可以在 Android 设备上工作,特别是 Nexus 7(它只会在我们酒店的这些设备上本地使用)。
问题是 html 反馈表单有不同的字段集,有些带有单选按钮,有些带有文本字段和文本区域。表单是通过邮寄发送的,我有一个在表单中调用的 jquery 验证脚本:
<form name="form" method="post" action="feedback_manager/fb_save.php" onsubmit="return validateForm()" >
一切正常,除了当用户填写文本字段时,软键盘中有一个明显的蓝色“开始”按钮,一旦他们完成输入,他们必须点击(或触摸),问题是它没有不要将它们带到下一个表单字段集,而是自动提交表单(或者在这种情况下首先运行我的验证脚本)。
KEYCODE_ENTER 按钮的默认操作不是应该将用户发送到下一个字段集而不是提交表单吗?
我将分享我的 html 表单和我的 webView 脚本,希望有人会发现我做错了什么:
<fieldset>
<legend>Food quality, taste & presentation</legend>
<input id="flavor4" name="flavor" value="excellent" type="radio" />
<label for="flavor4"> Excellent</label><br>
<input id="flavor3" name="flavor" value="good" type="radio" />
<label for="flavor3"> Good</label><br>
<input id="flavor2" name="flavor" value="average" type="radio" />
<label for="flavor2"> Average</label><br>
<input id="flavor1" name="flavor" value="bad" type="radio" />
<label for="flavor1"> Needs improvement</label><br>
</fieldset>
<fieldset>
<legend>Who was your waiter today?</legend>
<input name="waiter" type="text">
</fieldset>
//then another fieldset with radio buttons and so on
会不会是我的文本输入不是一个接一个地立即与单选按钮和组合框混合在一起?
这是我的 onKeyDown 代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
{
mWebView.goBack();
return true;
}
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
// do nothing
return false;
}
return true;
}
有趣的是,我的 KEYCODE_BACK 条件工作正常,但我希望 KEYCODE_ENTER 按钮不执行任何操作,只关闭软键盘或转到下一个字段但不提交表单。
我在这里看到了很多关于 SO 的答案,但他们似乎都没有在 Nexus7 上工作(还没有真正在其他设备上尝试过)。
综上所述,我所需要的只是让那个蓝色的“Go”按钮不做任何事情或转到下一个字段。
请帮忙。
**编辑**
今天早上我以全新的眼光看待这个问题,发现这个类似的帖子添加了一个 OnKeyListener 来检测密钥,然后返回 false。在 EditText 上输入键,按两次 onKey
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://some.url");
mWebView.setWebViewClient(new virtuoWebViewClient());
mWebView.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// do nothing
return false;
}
}
return false;
}
});
但仍然没有,“开始”按钮仍然提交表单:(,我会继续尝试,如果有人能指出我不同的方向或分享新想法,我将不胜感激。谢谢。