【发布时间】:2012-06-28 10:09:38
【问题描述】:
脚本在 jsfiddle 上:CODE
目前的作用:它是一种具有两种类型的 URL 字段 textarea 和 input 的表单,它将这些字段中的文本转换为可点击的链接。
工作原理:如果您点击链接旁边的链接,您可以编辑链接或双击链接。 如果您单击一次链接,它会将您带到该页面。
最后更新:我在最后一行添加了.trigger('blur');,因为在我这样做之前,文本区域显示的链接就像一个合并的链接,例如:test.com 和 test2.com 显示 test.comtest2.com,在我添加了最后一次更新后,textera 的拆分也适用于页面加载,而不仅仅是 textarea 的编辑(它是在没有最后一次更新的情况下工作,但只有当您编辑 textarea 并在链接之间放置一个空格时,我希望它能够在页面加载时工作,因为 textarea 格式已经作为一个链接前行发送)。
我的问题:在我上次更新后,双击搞砸了,它应该只能编辑链接,除非单击,否则不会进入该页面,但是现在它会编辑它,并且在一秒钟内它也会进入该页面。 我想要双击只是为了编辑而不去那个页面。并且只需单击一下即可。
提前非常感谢!
代码也在这里:
$('.a0 a').click(function(){
var href = $(this).attr('href');
// Redirect only after 500 milliseconds
if (!$(this).data('timer')) {
$(this).data('timer', setTimeout(function () {
window.open(href, '_blank')
}, 500));
}
return false; // Prevent default action (redirecting)});
$('.a0').dblclick(function(){
clearTimeout($(this).find('a').data('timer'));
$(this).find('a').data('timer', null);
$(this).parent().find('input,textarea').val($(this).find('a').text()).show().focus();
$(this).hide();})
$('.a0').click(function(){
$(this).parent().find('input,textarea').val($.map($(this).find('a'),function(el){return $(el).text();}).join(" ")).show().focus();
$(this).hide();})
$('#url0, #url1,#url4').each(
function(index, element){
$(element).blur(function(){
var vals = this.value.split(/\s+/),
$container = $(this).hide().prev().show().empty();
$.each(vals, function(i, val) {
if (i > 0) $("<span><br /></span>").appendTo($container);
$("<a />").html(val).attr('href',/^https?:\/\//.test(val) ? val : 'http://' + val).appendTo($container);;
}); })
}).trigger('blur');
【问题讨论】:
-
在网页上混合单击和双击是一种注定失败的设计。即使你能让它正常工作,这也是一场可用性灾难。
-
但它工作得很好,我只是想让 textarea 对链接有好处,在我添加
trigger()之后,textarea 工作了,但双击现在不能正常工作...... -
不,这行不通。对于使用平板电脑/手机的人来说,情况会更糟。
-
@Pointy,不,它在那个计时器上工作得非常好,并且在 click 和 dbclick 上工作得很好,但是 trigger() 破坏了它的工作......好吧,让我们以其他方式尝试,最后一部分脚本对 textarea 进行拆分以每行创建一个链接,但它仅在编辑操作时起作用,我怎样才能使该拆分在页面加载时完成?谢谢
-
做你想做的;我只是在传达专业 Web 应用程序设计领域普遍接受的智慧和最佳实践。
标签: javascript jquery jquery-ui