1

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

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

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

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

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

4

2 回答 2

1

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

例子:

<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>
于 2012-04-25T10:30:34.363 回答
0

High level idea would be

1) Create a css class to highlight selected link

2) Write javascript function to detect Ctrl key on KeyDown javsacript event of hyperlinks, this function should toggle the class of hyperlinks to selected link (so that user know which hyperlinks are selected) and add the hyperlink value/url to an hidden field to know the links of selected hyperlinks

3) Write javascript function on KeyUp javsacript event on hyperlinks to get the selected links and perform action on it.

于 2012-04-25T10:27:16.087 回答