WebView无法将文本设置为textarea

时间:2013-05-28 19:51:40

标签: android textarea android-webview

我正在使用webview处理Android项目。一切正常但我无法将文本设置为textarea。我有一堆页面有备忘录写选项。我正在使用jQuery将备忘录的代码加载到页面中:

$('#memoContainer').load("memo.html");

memo.html textarea:

<div class="sisalto">
<textarea id="memo" style="width: 100%"> </textarea>
</div>

textarea工作,我可以在其中写,我可以获取内容并使用jQuery将其保存在Android中:

function save(){
var newContent = $('#memo').val();
AndroidFunction.saveFile(newContent);
}

我正在尝试获取已保存的内容并将其设置在textarea中:

var setMemo = $('#memo');
setMemo.innerText("DOESNT WORK");
setMemo.val('NOPE');

我已经尝试谷歌搜索和浏览这里几个小时,但似乎找不到任何有用的东西。许多人建议.val('smth');选项,但它不起作用。

在尝试设置内容之前已加载备忘录,在我看来一切正常。这里有什么问题以及如何完成这项工作的想法?

2 个答案:

答案 0 :(得分:0)

你应该使用'完整'函数回调

$('#memoContainer').load('memo.html', function() {
    var setMemo = $('#memo');
    setMemo.val('hello');
});

您是否使用WebView启用javascript?你需要这个来启用javascript:

WebView webView = ...
webView.getSettings().setJavaScriptEnabled(true);

确保jQuery已正确加载,您可以发布代码吗?

这是一个工作示例(因为它使用CDN加载jquery需要互联网权限):

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String html = "<html>\n" +
                "<body>\n" +
                "<textarea id=\"area\"></textarea>\n" +
                "\n" +
                "<script src=\"http://code.jquery.com/jquery-1.10.0.min.js\"></script>\n" +
                "<script src=\"http://code.jquery.com/jquery-migrate-1.2.1.min.js\"></script>\n" +
                "\n" +
                "<script type=\"text/javascript\">\n" +
                "        $(document).ready(function() {\n" +
                "                var area = $('#area');\n" +
                "                area.val('Hello');\n" +
                "        });\n" +
                "</script>\n" +
                "\n" +
                "</body>\n" +
                "</html>";
        String mime = "text/html";
        String encoding = "utf-8";

        setContentView(R.layout.activity_main);
        WebView web = (WebView) this.findViewById(R.id.web);
        web.getSettings().setJavaScriptEnabled(true);
        web.loadDataWithBaseURL(null, html, mime, encoding, null);
    }    
}

答案 1 :(得分:0)

好的,问题是负载功能。它加载memo.html并在页面上显示它,但实际代码不会注入页面。因此我无法将文本设置为textarea,因为它实际上并不存在。