0

我有许多带有标签链接的字段,如下所示:

<div class="control-group">
    <label class="control-label" for="some-id-1"><a href="http://example.com/some-id-1" target="_blank">Text1</a></label>
    <div class="controls">
        <input type="text" id="some-id-1" name="some-id-1"><br>
    </div>
</div>
<div class="control-group">
    <label class="control-label" for="some-id-2"><a href="http://example.com/some-id-2" target="_blank">Text2</a></label>
    <div class="controls">
        <input type="text" id="some-id-2" name="some-id-2"><br>
    </div>
</div>

如果用户单击链接,我如何根据字段聚焦(不阻止默认操作)?即,如果用户单击Text1,那么我应该http://example.com/some-id-1在新窗口中打开并使用 id 在输入处设置焦点some-id-1

4

5 回答 5

1

jsfiddle

$(".control-label a").click(function(){
   $(this).parent().next().find('input').focus();

});
于 2012-10-20T16:59:28.127 回答
1
$('.control-label a').on('click', function(e) {
  e.preventDefault();
  $(this).parent().next().find('input').focus();
  // or
  $('.control-group').has(this).find('input').focus();
});
于 2012-10-20T16:59:49.797 回答
0
<a href="http://example.com/some-id-1" target="_blank" onClick="document.getElementById('some-id-1').focus();">Text1</a>
于 2012-10-20T16:59:00.293 回答
0

如果理解正确,您想打开一个新页面并在新页面中根据单击的链接设置焦点

如果您要打开一个新页面,您需要在 url 中传递一个哈希值或使用 cookie 并让其他页面解析哈希值或 cookie

在当前页面中:

$(function(){
    $('.control-label a').click(function(){
       var hash='#'+ $(this).next().find('input').attr('id');
       window.open( this.href + hash);
        return false;
    });
})

在其他页面:

$(function(){
    var hash= location.hash;
    $(hash).focus();
})
于 2012-10-20T17:09:21.273 回答
0

一个页面中的 JavaScript 无法控制另一个页面如何响应 URL,如果“其他”页面在您的控制之下,那么您可以将其设置为解析id

var parts = document.location.href.split('/'),
    id = parts.pop();

document.getElementById(id).focus;

另一方面,如果您想可靠地聚焦该元素,只需将 aid作为 a传递hash给 URL:

<a href="somepage.html#some-id">Go to an element of 'some id'</a>

这可能不会关注表单元素,但它应该将该元素吸引到用户的注意,并且在您无法控制的页面中,它更加可靠。

于 2012-10-20T17:13:13.453 回答