3

我有一个输入类型的文本元素和锚元素,如果焦点已经在输入文本元素上,现在我不想放松对那个锚标签的点击。我已经尝试过,但它不起作用。

HTML:

<input type = 'text' value='click here first' />
<a href='javascript:void(null);' id='nothing'>do nothing</a>

jQuery代码:

$('#nothing').bind('click', function(e){
    e.preventDefault();
})

以上对我不起作用。有人可以告诉我这里缺少什么吗?

4

2 回答 2

1

单击其他内容时,锚点总是会失去焦点,绕过它的方法是将焦点重置为输入:

var active = null;

$('#nothing').on({
    mousedown: function() {
        active = document.activeElement;
    },
    mouseup: function() {
        if (active) active.focus();
    },
    click: function(e) {
        e.preventDefault();
    }
});

小提琴

于 2013-07-24T07:30:35.273 回答
0

我遇到过类似的问题,尝试使用“mousedown”而不是点击事件。

这是演示

<input type = 'text' value='click here first' />
<a href='javascript:void(null);' id='nothing'>clicking this does not loose the focus from input field!</a>

$('#nothing').bind('mousedown', function(e){
    e.preventDefault();
})
于 2013-07-24T07:31:18.467 回答