控制preventDefault以选择要阻止的默认值

时间:2013-05-23 18:34:37

标签: javascript html events preventdefault stoppropagation

在我正在处理的页面中,我有这个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/

现在尝试将插入符号放在您单击的位置。您将检查输入是否已选中,未遵循链接但插入符号未放置在您单击的位置。

0 个答案:

没有答案