2013-06-04 12 views
13

Moim wymaganiem jest to, że muszę pokazać okno modalne jako formularz do wypełnienia przez użytkownika. Ale wysokość tego modala nie powinna przekraczać rozmiaru okna.Jak przewinąć do okna modalnego w javascript

Więc jeśli wpisy w formularzu są zbyt duże, modal staje się przewijany. Problem polega na tym, że podczas sprawdzania poprawności wpisów w formularzu komunikat o błędzie jest wyświetlany u góry modalu nad pierwszym wpisem. Jeśli użytkownik jest na końcu właściwości, nie będzie wiedział, że wystąpił błąd weryfikacji, chyba że modał przewinął się na szczyt zdarzenia błędu.

Próbowałem:

$(window).scrollTop(); 
// and 
$('#modalId').scrollTop(); 

jest to kod modalne:

<div class="modal hide" id="groupModal" tabindex="-1" role="dialog" aria-hidden="true" > 
    <div class="modal-header"> 
    </div> 
    <div class="modal-body" style="max-height: 300px;"> 
     <div class="grpForm"> 
      <div class="alert alert-error hide"> 

       <span class="errMsg"></span> 
      </div> 
      <div class="alert alert-success hide"> 

       <span class="successMsg"></span> 
      </div> 
      <form class = "formFieldHolder" id="groupInfoForm"></form> 
      </div> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn cancelFormBtn" data-dismiss="modal" aria-hidden="true" msgkey="common.cancel.label"></button> 
     <button class="btn btn-primary submitGroupFormBtn" type="submit" msgkey="common.submit.label"></button>  
    </div> 
</div> 
+0

wysłać kod modalne okno –

+0

nie wiem jak ja po prostu skopiować wklejany html ale to nie wyświetliło się na treści pytania Więc właśnie odwróciłem kod. Pokaż mi FAQ i opublikuj kod, gdy wiem, jak to zrobić. Może zająć trochę czasu, bym teraz musiał nad czymś pracować. – kavinder

+0

Możesz pisać kod wklejając kod i wybierając, a następnie kliknij "{}" icon –

Odpowiedz

15

$('#modalId').scrollTop(0);

scrollTop() zwraca tylko wartość; scrollTop(0) ustawia wartość na 0 (całą drogę do góry)

+0

Dziękuję bardzo za wyjaśnienie różnicy między powyższe dwa. Jednak osiągnąłem to, co chciałem, początkowo używałem $ ("# modalId"). ScrollTop (0); ale zamiast tego powinienem zrobić $ ('# bodyId_within_modal_which_is_scrollabe'). scrollTop (0); – kavinder

9

aby przewinąć stronę do modalnym, wybierz html, body i przejdź do offsetu górze modalnym

$("html, body").scrollTop($("#modalId").offset().top); 

Jeśli chcesz, aby przewinąć modalne div na górę użytku

$("#modalId").scrollTop(0); 

Example on jsFiddle

można połączyć zarówno przewijać stronę i modal do VI w razie potrzeby dla użytkownika.

Referencje

+0

Spowoduje to przewinięcie strony na górę okna modalnego.ale on chce przewinąć zawartość modalny –

+0

Tak jak powiedziano powyżej, zabrał mnie na górę okna modalnego. Bezpośrednie użycie scrollTop (0) jest najlepszym rozwiązaniem, o ile nie ma problemów z back-endem. Dziękuję za odpowiedź, ale może to być pomocne gdzie indziej. – kavinder

0
<script type="text/javascript"> 
      $(document).ready(function(){ 
      $('.scroll_top').hide(); 
      $(window).scroll(function(){ 
       if ($(this).scrollTop() > 100) { 
        $('.scroll_top').fadeIn(); 
       } else { 
        $('.scroll_top').fadeOut(); 
       } 
      }); 

      $('.scroll_top').click(function(){ 
       $("html, body").animate({ scrollTop: 0 }, 500); 
       return false; 
      }); 

     }); 
</script> 
0
let element = document.getElementById('your_div_id'); 

element.scrollIntoView(true); 
+3

Podczas gdy fragment jest w porządku, czy możesz wyjaśnić, * jak * i * dlaczego * to rozwiązuje problem PO? –

0

Aby uniknąć szorstki ruch do góry wolałbym użyć (animowany ruch):

$('#modalId').animate({ 
     scrollTop : 0 
    }, 'slow'); 
Powiązane problemy