Javascript iOS cordova应用程序中的Textarea只接受一次输入
具体来说,在安装应用程序后,可以通过软键盘输入一次来更改textarea值。这是一个单页应用程序,我在其中使用车把模板。以下是模板:Javascript iOS cordova应用程序中的Textarea只接受一次输入,javascript,ios,cordova,textarea,Javascript,Ios,Cordova,Textarea,具体来说,在安装应用程序后,可以通过软键盘输入一次来更改textarea值。这是一个单页应用程序,我在其中使用车把模板。以下是模板: <script id="comment-form-tpl" type="text/template"> <header class="bar bar-nav"> <a href="#" class="btn btn-link btn-nav pull-left"> Ca
<script id="comment-form-tpl" type="text/template">
<header class="bar bar-nav">
<a href="#" class="btn btn-link btn-nav pull-left">
Cancel
</a>
<h1 class="title">Add Comment</h1>
</header>
<div class="bar bar-standard bar-footer">
<button type="button" id="save-comment" class="btn btn-block">Save</button>
</div>
<div class="content">
<form class="input-group">
<textarea id="comment-text" placeholder="Comment" rows="10" autofocus>{{{comment}}}</textarea>
</form>
</div>
</script>
我使用连接到Save按钮的javascript从textarea获取输入:
var CommentAddView = function() {
var Comment = new Object();
this.initialize = function() {
this.$el = $('<div/>');
this.$el.on('click', '#save-comment', this.saveComment);
if (window.localStorage.getItem("comment")) {
var text = window.localStorage.getItem("comment");
text = text.replace(/<br>/g, "\n");
this.setComment(text);
}
this.render();
};
this.render = function() {
this.$el.html(this.template(Comment));
return this;
};
this.setComment = function(text) {
Comment.comment = text;
};
this.saveComment = function() {
var text = $("#comment-text").val();
text = text.replace(/(\r\n|\r|\n)/g, '<br>');
window.localStorage.setItem("comment", text);
router.load('');
};
this.initialize();
})
这一切只需一次就可以完美地工作——文本区显示在软键盘上,我可以输入一些内容,然后保存到本地存储中。
但是,编辑不起作用:如您所见,如果本地存储中有注释值,则会将其放在文本区域中。这是可行的,但值不能更改。我可以使用软键盘输入新文本,它将显示在文本区域中,但当我触摸Save时,我可以通过登录控制台验证$comment-text.val没有更改。与尝试删除类似:删除将从本地存储中删除注释的值。如果我尝试输入新注释,文本区域将显示为空白,并且我可以键入新注释,但是当我尝试保存时,$comment-text.val的值是第一条,应该是已删除的注释!如果我试着通过放线来解决这个问题
$comment-text.val;
那么$comment-text.val确实是空的。。。但它仍然无法通过键盘输入进行更改。如果我只是在桌面上的Safari中打开应用程序,一切都正常;因此,这是一个具体的iOS或可能只是iPhone的问题。我正在测试iOS 8.1.3。我已经在谷歌上搜索过了,尝试过一切似乎与之有着千丝万缕联系的东西,但我已经没有主意了。有人知道这里发生了什么吗?终于知道了!我添加了一行:$comment-text.remove;到saveComment函数。因此:
this.saveComment = function() {
var text = $("#comment-text").val();
$("#comment-text").remove();
text = text.replace(/(\r\n|\r|\n)/g, '<br>');
window.localStorage.setItem("comment", text);
router.load('');
};
每次显示注释表单时,我都会创建一个新的CommentAddView对象,但我最终意识到jQuery的作用就像上一个仍然存在一样。显式删除它可以解决这个问题