focus()在colorbox弹出窗口内不起作用

时间:2011-03-01 12:42:53

标签: javascript jquery colorbox

我尝试将focus用于表单上的第一个输入字段。但 它不起作用。当我为该输入调用attr("id")时,它有效。当我为同一个输入调用焦点时,我没有看到任何输入 结果。我也尝试使用原生Javascript。有谁知道怎么做 解决了吗?

6 个答案:

答案 0 :(得分:5)

你们都误解了这个问题。当Colorbox打开时,您无法聚焦输入字段?

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

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

您还可以将焦点绑定到事件挂钩:

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

这应该足以开始了。

答案 1 :(得分: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();
    });

答案 2 :(得分:1)

可能会发生这样的情况:打开彩色框时,焦点会转到最高元素,即页面主体。使用document.activeElement来查找焦点是哪个元素。然后找到你的颜色框的iframe或id然后设置焦点

答案 3 :(得分:0)

尝试第一个选择器,

$("form input:first").focus();

http://jsfiddle.net/erick/mMuFc/

答案 4 :(得分: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;
}

答案 5 :(得分:0)

您也可以使用

$.colorbox({ 

...,
trapFocus: false
});

禁用彩盒内的焦点