【问题标题】:How to perform multiple page hyperlink clicks with ctrl key如何使用 ctrl 键执行多页超链接点击
【发布时间】:2012-04-25 09:53:12
【问题描述】:

我想知道如何(如果有办法)通过 ctrl 键处理多次链接点击。

因此,例如,用户将访问一个带有大约 3 个超链接的网页。然后用户将按住 ctrl 键,然后单击一个链接,然后单击另一个。然后当 ctrl 键被释放时,会发生一个事件(可能是根据两个超链接的值的组合进行搜索)。

我正在使用 C# 并假设解决方案可能会在 jQuery 中完成?

选择的工作方式应该类似于 Windows 资源管理器的工作方式。按住 ctrl 键,然后选择一个文件,然后选择另一个文件,然后剪切或粘贴到某处。

感谢您提供的任何帮助,因为我正在努力在其他地方寻求帮助。

【问题讨论】:

  • 到目前为止您尝试过什么?用简单的方法,将class="selectedItem" 设置为选定的超链接..???
  • 请注意,如果客户端浏览器对您正在使用的键(如 Ctrl)具有自定义绑定,则仍会发生默认浏览器行为。

标签: c# javascript jquery asp.net


【解决方案1】:

你可以做这样的事情;保持 CTRL 键的状态(keycode = 17),按下 CTRL 时将链接添加到数组(keydown 事件),在 keyup 事件(当 keycode == 17 时)在新窗口中打开链接。在标签中打开它们实际上是不可能的,但是有一个适用于 Firefox 的工作示例;阅读this

例子:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
var ctrlIsDown = false;
var links = new Array();

function afterKeyUp()
{
    if(links.length > 0){
        for(var link in links){
                window.open(links[link]);
        }
        links = new Array();
        $("a").css('color', '');
    }
}

$(document).ready(function(){

$(document).keydown(function(e){ 
    if(e.which == 17) {
        ctrlIsDown = true;
    }
});

$(document).keyup(function(e){ 
    if(e.which == 17) {
        ctrlIsDown = false;
        afterKeyUp();
    }
});

$("a").click(function(e){
    if(ctrlIsDown){
        var href = $(this).attr("href");
        if($.inArray(href, links) == -1)
        {
            links[links.length] = href;
            $(this).css('color', 'red');
        }
    e.preventDefault();
    }
});

});
</script>
</head>
<body>

<a href="1.html">Link 1</a>
<a href="2.html">Link 2</a>
<a href="3.html">Link 3</a>


</body>
</html>

【讨论】:

  • 非常感谢布赖恩。我一定会试试这个。
【解决方案2】:

高层次的想法是

1) 创建一个css类来高亮选中的链接

2) 编写 javascript 函数来检测超链接的 KeyDown javsacript 事件上的 Ctrl 键,该函数应该将超链接的类切换到所选链接(以便用户知道选择了哪些超链接)并将超链接值/url添加到隐藏字段以了解所选超链接的链接

3) 在超链接上的 KeyUp javsacript 事件上编写 javascript 函数以获取选定的链接并对其执行操作。

【讨论】:

  • 谢谢伊姆兰。我会将其纳入我的解决方案中
猜你喜欢
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多