2013-05-28 61 views
0

我正在与webview一起开发Android项目。一切正常,但我不能将文本设置为textarea。我有一堆有备忘录选项的页面。我加载了备忘录的代码到网页使用jQuery:WebView无法将文本设置为textarea

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

memo.html textarea的:

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

textarea的作品,我可以写,我可以得到的内容,它使用jQuery保存在安卓

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

我试图让保存的内容,并将其设置在textarea的:

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

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

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

回答

0

你应该用一个 '完整的' 回调函数

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

你启用JavaScript用的WebView?你需要这个来启用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); 
    }  
} 
+0

是的,启用JavaScript并从本地文件正确加载jQuery。就像我说的,除了将文本设置到textarea之外,一切都可以工作。 – muhonne

0

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