2011-03-01 28 views
10

我尝试使用focus作为表单上的第一个输入字段。但 它不起作用。当我打电话给attr("id")时,它可以工作。当我为同一输入调用焦点时,我没有看到任何 结果。我也尝试使用原生Javascript。有谁知道如何修复这个问题 ?focus()在colorbox弹出框内不起作用

回答

1

使用

$(document).ready(function() { 
     // focus on the first text input field in the first field on the page 
     $("input[type='text']:first", document.forms[0]).focus(); 
    }); 
+0

也可以使用'(“:正文:第一”)。焦点();' – diEcho 2011-03-01 12:48:34

+0

谢谢,但这只适用于登录表单。你有任何想法为什么它不能在其他形式$(“input [id = uname]”)。val(“1300”); \t \t $(“input [id = uname]”)。focus();我没有重点领域的价值= 1300 – 2011-03-01 13:14:31

+0

使用表格名称... – diEcho 2011-03-01 13:20:36

5

你们都误解了问题。当Colorbox打开时,您无法集中输入字段?

...除非您将焦点添加到Colobox onComplete键,例如,

$('#mydiv a').colorbox({ onComplete:function(){ $('form input:first').focus(); }}); 

你也可以绑定的焦点事件挂钩:

$('#mydiv a').bind('cbox_complete', function(){ 
     $('form input:first').focus(); 
}); 

这应该是足够上手。

+1

谢谢,这真的很有用 - 实际上回答了问题的关键方面。 – penfold 2011-11-17 06:05:10

+0

你能解释一下这个代码放在哪里吗? – 2014-12-04 21:13:56

0

我刚刚偶然发现了这个问题。

我认为这是最好有一个$ .colorbox 首战这样的:

function showActionForColorBox(
     _url, 
     _forFocus 
    ) { 
    $.colorbox(
     { 
      scrolling: false, 
      href: _url, 
      onComplete: function() { 
       idColorboxAjaxIndect1.appendTo($('#cboxOverlay')); 
       idColorboxAjaxIndect2.appendTo($('#cboxOverlay')); 
       idColorboxAjaxIndect3.appendTo($('#cboxOverlay')); 
       idColorboxAjaxIndect4.appendTo($('#cboxOverlay')); 

       // --> Possible element's ID for focus 
       if (_forFocus) { 
        $('#' + _forFocus).focus(); 
       } 
       return; 
      }, 
      onCleanup: function() { 
       // TODO: ? 
       return; 
      }, 
      onClosed: function() { 
       if (shouldReloadPageAfterColorBoxAction) { 
        // --> Should we reload whole page? 
        shouldReloadPageAfterColorBoxAction = false; // NOTE: To be sure: Reset. 
        window.location.reload(false); 
       } 
       else if (cbEBillsActionReloadPopup) { 
        // --> Should we reload colorbox 
        cbEBillsActionReloadPopup = false; 
        showActionForColorBox(_url); 
       } 
       else if (cbShouldLoadAnotherContentAfterClosed) { 
        // --> Should we reload colorbox with custom content? 
        cbShouldLoadAnotherContentAfterClosed = false; 
        $.colorbox({ html: setupContentForcbShouldLoadAnotherContentAfterClosed }); 
        setupContentForcbShouldLoadAnotherContentAfterClosed = ''; 
       } 
       return; 
      } 
     } 
     ); 

    return; 
} 
1

这可能会发生,你的颜色框打开时,它的焦点进至最高的元素,即身体页。使用document.activeElement来查找焦点到哪个元素。然后找到iframe或你的颜色框的ID,然后将焦点设置它

0

您还可以使用

$.colorbox({ 

..., 
trapFocus: false 
}); 

禁用焦点内部颜色框

相关问题