我正在构建一个简单的脚本,允许用户动态添加电话号码。这些输入与标签配对,可以全部编辑。我正在使用jeditable标签然后我遇到一个小问题,如果用户试图在标签的输入框内单击,浏览器将检测到标签上的单击并将焦点放在输入元素上标签的“for”属性。
我尝试了以下内容:
$(selector).find('input').live('focus', function(){
$(selector).click(function(e){
e.preventDefault;
return false;
});
}).live('blur', function(){
//somehow reattach the behaviour here?
});
基本上“选择器”包含我的可签名标签的选择器。我发现它内部的输入和焦点我禁用了标签的默认行为。这可以防止标签改变焦点。但是,我不知道如何撤消这个。我想我可以切换一个布尔标志,然后调用单独的方法来防止默认,但我觉得必须有一个更清洁的方法来做这个,任何建议?
答案 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/。