jquery
  • jquery-ui-dialog
  • setfocus
  • 2012-01-10 78 views 2 likes 
    2

    我有问题强制关注JQuery对话框内容中文本框的动态生成。我已经搜索了这个,看起来如果Jquery对话框被设置为模态,JQuery“窃取”了文档级别的焦点。说实话,我不太明白这意味着什么:P,但如果有人对我的问题有任何解决方法,将不胜感激。以下是我的Jquery对话框的代码片段。焦点在JQuery对话框内的文本框不起作用

    $.post(URI, Params, function(data){ 
        $("<div id='MyModal'></div>").html(data).dialog({ 
         show: "blind", 
         width:1000, 
         height:600, 
         title:"My Modal", 
         resizable: false, 
         modal: true, 
         draggable:false, 
         position:['center','center'], 
         buttons: { 
          "Close": function() { 
           //window.console.log('Close button clicked'); 
           $(this).dialog("close"); 
          }, 
         }, 
    
         // Onclose callback 
         close:function(){ 
          // Close modal 
              CloseDiaryModal(); 
         } 
         // End onclose callback 
        }) 
        // Add styling to button widgets 
        .dialog("widget") 
        .find(".ui-dialog-buttonset").css({'float': 'left', 'width': '100%'}).end() 
        .find(".ui-dialog-buttonset button") 
        .eq(0).css({'float': 'left', 'margin-left': '10px'}).end() 
        .eq(0).attr('id', 'CloseBtn').end() 
    }) 
    .complete(function() {  
          // Set focus 
        $("#SearchField").focus(); 
    }); 
    // End modal function 
    

    我已经尝试添加下列选项,但它仍然不工作。 ATM,您可以看到光标闪烁约1秒,然后失去焦点。无法弄清楚为什么会发生这种情况。谢谢,希望有人能帮助我。

    focus:function(event, ui) { 
         $("#SearchLastName").focus(); 
    }, 
    open:function(event, ui) { 
        $('#SearchLastName').focus(); 
    }, 
    

    回答

    0

    我认为它更多的是关于何时将内容添加到模态对话框中。 尝试在该文本字段设置焦点您确认对话框已成功加载后:

    $('some selector').dialog({ 
        bgiframe: true, 
        open: function() { 
         $('./*your element*/'.focus(); 
        }, 
        beforeclose: function(event, ui) { /* your code */ } 
    }); 
    

    这将确保只尝试已经打开对话框后执行的焦点。

    +0

    当您发布此信息时,您可能错过了我上次编辑的内容。无论如何,正如你可以在我编辑的问题上看到的,我尝试了“open”和“focus”两个选项,并且我尝试在POST事件“完成”中添加set focuscode,但没有任何效果。就像我说的,你可以看到光标闪烁一秒,但是然后失去了焦点。 – asyadiqin 2012-01-10 01:08:03

    +0

    对 - 你可以发布一个例子,也许用http://jsfiddle.net/? – danbgray 2012-01-10 09:24:08

    +0

    我从来没有使用过jsfiddle.net,也不知道如何使用它。此外,原始代码对于我来说非常复杂,以便知道要在jsfiddle.net中提取哪些部分。任何其他方式,你可以帮助我吗? – asyadiqin 2012-01-11 18:00:35

    0

    在我的一个案例中,事实证明,输入字段已被其他代码禁用。

    如果是这种情况,请删除禁用的属性,像这样:

    jQuery('#<form-id>').dialog({ 
        open: function(event, ui) { 
         jQuery('#<input-id>').removeAttr('disabled').focus(); 
        } 
    }); 
    

    ...或避免禁用有问题的表单字段。

    相关问题