在标签上可切换,如何防止它失去对点击的关注?

时间:2011-10-18 13:06:55

标签: jquery events jeditable

我正在构建一个简单的脚本,允许用户动态添加电话号码。这些输入与标签配对,可以全部编辑。我正在使用jeditable标签然后我遇到一个小问题,如果用户试图在标签的输入框内单击,浏览器将检测到标签上的单击并将焦点放在输入元素上标签的“for”属性。

我尝试了以下内容:

$(selector).find('input').live('focus', function(){
    $(selector).click(function(e){
        e.preventDefault;
        return false;
    });
}).live('blur', function(){
    //somehow reattach the behaviour here?
});

基本上“选择器”包含我的可签名标签的选择器。我发现它内部的输入和焦点我禁用了标签的默认行为。这可以防止标签改变焦点。但是,我不知道如何撤消这个。我想我可以切换一个布尔标志,然后调用单独的方法来防止默认,但我觉得必须有一个更清洁的方法来做这个,任何建议?

1 个答案:

答案 0 :(得分:2)

另一种方法是在编辑标签时删除for属性,然后在编辑后添加该属性。

// store the "for" attr in the element's data
$('label').each(function() {
    $(this).data('for', $(this).attr('for'));
});

$('label').editable('...', {
    ...
    onreset: function() {
        var $label = $(this).parent();
        $label.attr('for', $label.data('for'));
    }
}).click(function() {
    $(this).removeAttr('for');
});

查看实际操作:http://jsfiddle.net/G8QuA/