我在jQuery mobile中有一个listview,其中每个条目包含几行文本。
单击该条目应该用< textarea>替换文本的某些部分。使其可编辑。再次单击该条目应再次使用纯文本(现在已编辑)替换textarea。
在编辑文本时,用户应该能够在文本框中单击以选择部分文本或移动光标。为了防止来自textarea的点击事件冒泡,我在事件上使用了stopPropagation()并且效果非常好。
然而,虽然这适用于Chrome& Safari,Firefox和Internet Explorer都不会移动光标,也不会让用户在文本区域中选择部分文本。
我在这里缺少什么吗? (对于Firefox,我在Windows 7上使用的是版本19.0.2,如果这是相关的。我已尝试使用preventDefault或返回false,但这不起作用 - 为什么要这样做?)
我创建了JSFiddle here
html代码是
<ul id="listid" data-role="listview" data-filter="true" data-iconpos="center" data-split-icon="arrow-u" data-theme="c" data-split-theme="b" data-inset="true">
<li><a href="#" id="link1">
<h2>Title</h2>
<p>Here is some item<br />with several lines<br />
<span id="comment1">And this line is supposed to be editable</span>
<textarea style='display: none; width: 95%;' id="textarea1"></textarea>
</p></a>
<a href="#" onclick="alert('Something else happens here')">This does something else</a>
</li>
</ul>
和各自的JavaScript(在这里加载到body.onLoad,但这只是为了JsFiddle):
window.toggled = false;
$("#link1").click( function(e){
var textarea = $("#textarea1").toggle();
var comment = $("#comment1").toggle();
if(window.toggled){
comment.html(textarea.val());
}
else{
textarea.val(comment.html());
}
toggled = !toggled;
});
$("#textarea1").click(function(e){
if(console && console.log){ console.log(e);}
e.stopPropagation();
});
请忽略切换textarea的不那么优雅的解决方案。
答案 0 :(得分:0)
IE对锚标记内的textarea不满意。见http://jsfiddle.net/zCfRu/
<a href="#" id="link1">
<h2>Title</h2>
<p>Here is some item<br />with several lines<br />
<span id="comment1">And this line is supposed to be editable</span>
</p>
</a>
<textarea style='display: none; width: 95%;' id="textarea1"></textarea>