jquery
  • jquery-ui-dialog
  • setfocus
  • 2012-01-10 148 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(); 
        } 
    }); 
    

    ...或避免禁用有問題的表單字段。

    相關問題