0

我正在使用webview. 一切正常,但我无法将文本设置为文本区域。我有一堆有备忘录写作选项的页面。我正在使用 jQuery 将备忘录的代码加载到页面中:

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

memo.html 文本区域:

<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');选项,但它不起作用。

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

4

2 回答 2

0

您应该使用“完整”函数回调

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

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

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

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

这是一个工作示例(需要 Internet 权限,因为它使用 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);
    }    
}
于 2013-05-28T20:37:39.840 回答
0

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

于 2013-05-29T11:16:12.857 回答