在我正在处理的页面中,我有这个HTML(简化版本;原始版本有点复杂)。
<a href="alink.php" >
<b>1</b>
<span name="aName" data-editable="text" ></span>
<span class="type">numeric</span>
</a>
然后我有一个允许“编辑模式”的系统 对模式进行编辑会将HTML更改为:
<a href="alink.php" >
<b>1</b>
<span name="aName" data-editable="text" ><input name="aName" type="text"></span><img src="ok.png"><img src="x.png"></span>
<span class="type">numeric</span>
</a>
问题如下:
当用户点击输入时,如何在没有其他任何事情发生的情况下将carret放在用户点击的位置?
为此,我尝试了这个:
如果我使用的是preventDefault(),则不会将用户发送到链接,但是carret也没有位于用户点击的位置。
如果我使用stopPropagation(),则不会阻止任何操作,单击该链接
如果我同时使用两者,则会发生与preventDefault()相同的情况。
我认为一种可能的解决方案是删除<a>
并将其替换为其他标记,例如<span>
标记。由于这个系统的工作原理,我只是不想这样做。如果您认为有一个不错的选择,那么请说出来。
没有图书馆的示例或答案请
编辑:根据要求,我的相关js代码:
this.editableElement = document.createElement('input');
this.editableElement.type = "text";
this.editableElement.onclick = function (e){
e.preventDefault();
e.stopPropagation();
}.bind(this);
this.editableElement.name = this.parent.getAttribute('name');
this.editableElement.value = this.currentText;
Edit2:根据要求提供jsfiddle。 http://jsfiddle.net/brunoais/gZU8C/
现在尝试将插入符号放在您单击的位置。您将检查输入是否已选中,未遵循链接但插入符号未放置在您单击的位置。