2012-05-30 31 views
7

पर संवाद सामग्री को स्क्रॉल करने के लिए मेरे पास एक jQueryui संवाद है जो मैं बहुत सारी सामग्री (सेवा अनुबंध की शर्तों) में लोड कर रहा हूं जो सामग्री के रूप में स्क्रॉलबार का कारण बनता है। यह वही है जैसा मैं चाहता हूं। हालांकि, मैं स्क्रॉल बार शीर्ष पर होना चाहता हूं (इसलिए उपयोगकर्ता स्क्रॉल किए बिना शुरुआती से पढ़ सकते हैं) संवाद समाप्त होने के बाद। संवाद के लिए सेटअपjQueryui संवाद स्क्रॉल कैसे प्राप्त करें शीर्ष पर जाएं

$(function() 
{ 
$("#tos_dialog").dialog({ 
    title: 'Terms Of Service Agreement', 
autoOpen: true, 
height: 480, 
    width: 640, 
modal: true, 
    show: "blind", 
hide: "explode", 
    buttons: { 
     "I Accept": function() { 
     $(this).dialog("destroy"); 
       $("#login_container").dialog("destroy"); 
       window.location.replace('/main.php'); 
    }, 
      "I Decline": function() { 
       $(this).dialog("destroy"); 
      } 
     } 
    }); 

AutoOpen सही और गलत पर दोनों सेट के साथ मैं कोशिश की है है, और मैं शीर्ष करने के लिए स्क्रॉल करने के लिए सामग्री प्राप्त करने की कोशिश करने के लिए निम्न कोड के सभी की कोशिश की है है:

$("#tos_dialog").show() 
    $("#tos_dialog").scrollTop(); 
    $(".ui-dialog").show(); 
    $(".ui-dialog").scrollTop(); 
    $(".ui-widget-content").show(); 
    $(".ui-widget-content").scrollTop(); 
    $("body").scrollTop(); 
    $('#tos_dialog', window.parent.document).scrollTop(0); 

दुर्भाग्यवश उपरोक्त में से कोई भी काम नहीं कर रहा है। मैंने संवाद के लिए उपरोक्त बाध्य घटनाओं को सम्मिलित करने की कोशिश की है, बिना किसी लाभ के संवाद और संवाद का आकार बदलें। किसी भी तरह की सहायता का स्वागत किया जाएगा।

उत्तर

1

ठीक है, इसलिए मुझे अंत में काम करने के लिए एक हैक किया गया रास्ता मिला। ऐसा लगता है कि लोग scrollTop ("0") और/या संभावित रूप से दूसरों का उपयोग कर सकते हैं, इनमें से कोई भी मेरे लिए काम नहीं करता है। यदि यह आपके लिए भी मामला है, तो निम्न का प्रयास करें:

nbsp; के साथ एक लिंक बनाएं; इसके पाठ के रूप में (इसलिए यह तुरंत एक लिंक की तरह नहीं दिखता है)। इसे उस संवाद के प्रदर्शन क्षेत्र में पहला HTML बनाएं जिसे आप प्रदर्शित करना चाहते हैं (मेरे मामले में यह डेलॉग में प्रदर्शित सेवा की मेरी शर्तों का शीर्ष है)।

फिर संवाद की घोषणा करते समय, ओपन फ़ंक्शन को पैरामीटर के रूप में जोड़ें और तत्व के भीतर सभी लिंक को धुंधला करने के लिए लाइनों को शामिल करें और फिर शीर्ष पर दिए गए लिंक पर फ़ोकस सेट करें। नीचे एक प्रारंभिक कोड है जो मेरे लिए काम करता है।

$(function() { 
    $("#tos_dialog").dialog({ 
    title: 'Terms Of Service Agreement', 
     autoOpen: false, 
     height: 480, 
    width: 640, 
     modal: true, 
    show: "blind", 
     hide: "explode", 
    open: function() 
    { 

    $('.ui-dialog-relative :link').blur(); 
    //setTimeout(function() { $('#tos_top').focus();}, 4000); 
    $('#tos_top').focus(); 
    }, 
    focus: function(event, ui) {$('#tos_top').focus(); }, 
    buttons: { 
      "I Accept": function() { 
       $(this).dialog("destroy"); 
     $("#login_container").dialog("destroy"); 
     window.location.replace('/nextpage.php'); 
      }, 
      "I Decline": function() { 
       $(this).dialog("destroy"); 
      } 
     } 
    }); 
    $("#tos_dialog").dialog("open"); 
}); 

आशा है कि इससे दूसरों को अंतिम विकल्प के रूप में मदद मिलेगी जो पहले किसी भी कारण से काम करने के लिए मानक तरीके नहीं प्राप्त कर सकते हैं।

+0

धन्यवाद! मुझे कुछ समय बचाया – sd1sd1

7

$("#the_dialog_div").scrollTop("0") 

यह मेरे लिए काम किया कोशिश करो!

+0

नहीं, खेद थी एस भी काम नहीं किया था। – Ross

2

प्रयास करें:

setTimeout(function(){ 
    $('#selector').scrollTop("0"); 
},100); 
1

मैं इस एक ही मुद्दा था, मेरी jQuery ui को संवाद() संवाद सामग्री की तह तक स्क्रॉल खुला होगा। मेरे सहयोगी ने सुझाव दिया कि ऐसा इसलिए था क्योंकि सामग्री के नीचे एक बटन/लिंक था।

मुझे यह भी पता चला कि $("#dialog").scrollTop("0") काम नहीं करेगा।

मुझे यह पृष्ठ मिला और संवाद सामग्री की शुरुआत में एक लिंक जोड़ने के लिए प्रीपेन्ड() का उपयोग करने का प्रयास किया और फिर focus() पर कॉल करें। यह का उपयोग किए बिना open() ईवेंट में सभी का उपयोग किए बिना काम किया।

लिंक आईई 10 में एक रेखांकित के रूप में संवाद के ऊपरी बाईं ओर दृश्यमान रूप से प्रदर्शित किया गया जिसकी मुझे परवाह नहीं थी।

मुझे पता चला कि लिंक बिल्कुल आवश्यक नहीं था। $("#dialog").focus() पृष्ठ के शीर्ष पर स्क्रॉल करने के लिए पर्याप्त था। यह फ़ायरफ़ॉक्स और आईई 10 में परीक्षण किया गया था।

समाधान:

var mydialog = $("<div id='mydialog'>Here is some exceptionally long content which will overflow.</div>"); 
$("body").append(mydialog); 
mydialog.dialog({open : function(event, ui) { 
mydialog.focus(); 
} 
}); 

HTH

5

यह मेरे लिए काम कर रहा है

$(function() 
{ 
$("#tos_dialog").dialog({ 
    title: 'Terms Of Service Agreement', 
    autoOpen: true, 
    height: 480, 
    width: 640, 
    modal: true, 
    show: "blind", 
    hide: "explode", 
    buttons: { 
    "I Accept": function() { 
    $(this).dialog("destroy"); 
     $("#login_container").dialog("destroy"); 
     window.location.replace('/main.php'); 
    }, 
    "I Decline": function() { 
     $(this).dialog("destroy"); 
    } 
    }, 
    open:funtion(){ 
    //Solution HERE 
    $(".ui-dialog-content").scrollTop(0); 
    //End of Solution 
    } 
}); 
+0

यह सवाल का जवाब नहीं देता है। किसी लेखक से स्पष्टीकरण की आलोचना करने या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपनी पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/faq#reputation) हो जाने पर आप सक्षम होंगे [किसी भी पोस्ट पर टिप्पणी] (http://stackoverflow.com/privileges/comment)। –

+2

क्या आपने // समाधान यहां $ ("। Ui-dialog-content") याद किया था। ScrollTop (0); // समाधान भाग का अंत? – G3z

+0

यह मेरी समस्या का समाधान प्रदान करता है। – alp

1

मेरे मामले में, मैं #dialog modal:true है, इसलिए उपरोक्त में से कोई काम किया।

मैंने पाया कि body तत्व क्या वास्तव में स्क्रॉल किया गया था, तो मैं निम्नलिखित किया था और यह पूरी तरह काम करता है:

$("#timeWindowDialog").dialog({ 
    autoOpen: false, 
    modal: true, 
    open : function() { 
     $('body').scrollTop(0); 
    } 
}); 
0

जोड़ने उद्घाटन संवाद के लिए निम्न() फ़ंक्शन बहुत अच्छी तरह से काम किया (और केवल संवाद अगर यह बड़े है अंदर स्क्रॉल:।

$('#dialog-form').dialog({ 
    height: 500, 
    width: 600, 
    modal: false, // works with modal true and false 
    open: function() 
     { 
      $('#dialog-form').scrollTop(0); 
     }, 

शायद अगर संवाद इस हैंडलर सेट किया गया है इससे पहले कि स्वचालित खुलता है काम नहीं करता है