2011-10-07 11 views
5

Wyświetlane jest okno dialogowe interfejsu użytkownika jQuery zawierające element sterujący datepicker jQuery UI. Problem polega na tym, że pierwszym polem formularza w oknie dialogowym jest datepicker, a tym samym otrzymuje fokus, gdy otwiera się okno, co z kolei powoduje automatyczne otwieranie okna datepicker. Nie chcę tego.jQuery UI DataPicker Otwórz w oknie dialogowym Otwórz

Próbowałem nazywając

$('#Date').datepicker('hide') 

następnie w otwartym funkcji okna dialogowego, a także po kodzie sprawia, że ​​okno otwarte, ale to nie działa, gdy zostanie osiągnięta, że ​​kod, okno datepicker ISN Jeszcze nie otwarte.

Jak ustawić, aby okno datepicker nie otwierało się, gdy pojawi się okno dialogowe, ale nadal będzie otwarte, gdy użytkownik kliknie wejście?

+0

możliwe duplikat [Jak zakrycia pierwszego wkładu tworzą w otworze dialogowego] (http://stackoverflow.com/questions/5418138/how-to-blur-the-first-form-input-at -the-dialog-opening) – Teepeemm

Odpowiedz

7

Można użyć spust ikoną: http://jqueryui.com/demos/datepicker/#icon-trigger

I, jeśli to konieczne, uniemożliwić użytkownikowi wpisanie daty.

Stworzyłem skrzypce w oknie dialogowym z datepicker i nie mogłem powielić problemu w FF lub Chrome. Tak się stało w IE.

http://jsfiddle.net/458bM/2/

$(".datepicker").datepicker({ 
    dateFormat: 'yy-mm-dd ' 
}); 

$(".datepicker").datepicker("disable"); 

$("#dialog").dialog({ 
width: 400, 
modal: true, 
open: function(event, ui) { 
    $(".datepicker").datepicker("enable"); 
    } 
}); 

podstawie poprzedniej odpowiedzi: How to blur the first form input at the dialog opening

+0

Nie wiem, czy jest to problem z jsfiddle, ale jeśli umieścisz go na normalnie renderowanej stronie, dzieje się tak również w Chrome. –

+0

@NickOlsen To dialog koncentrujący się na pierwszym elemencie. Jest bilet do zespołu jquery ui do naprawienia. W międzyczasie zaktualizowałem moją odpowiedź i skrzypce. –

+0

To trochę denerwujące. Ale myślę, że nie możesz narzekać za dużo, kiedy jest za darmo!:) –

0

Po zdefiniowaniu okna dialogowego można określić element, na którym ma być aktywny fokus. Ustaw fokus na inny element w oknie dialogowym. Możesz również ustawić swoje połączenie, aby ukryć datepicker w otwartym kodzie zdarzenia.

+0

Próbowałem obu tych pomysłów, jak wspomniano w opisie i nie działało. Umieściłem punkt przerwania na funkcji otwartej, a okno datepaksu nie jest otwarte w tym momencie. Otwiera się po wykonaniu funkcji otwartej. –

6

Można wyłączyć datepicker, gdy okno nie jest otwarte.

$('#datepicker').datepicker({ 
    ... 
    disabled: true 
}); 

$('#dialog').dialog({ 
    open: function(event, ui) { 
     $('#datepicker').datepicker('enable'); 
    }, 
    close: function(event, ui) { 
     $('#datepicker').datepicker('disable'); 
    }, 
    ... 
}); 

Zobacz w działaniu: http://jsfiddle.net/william/Rf37h/1/.

+0

Próbowałem, ale nie działa, Czy możesz podać pełny kod źródłowy? –

+0

Pełne źródło znajduje się na stronie demonstracyjnej: http://jsfiddle.net/william/Rf37h/1/. –

+0

Widzę to, ale dzwoniąc z oddzielnego pliku, to nie działa. Musimy uwzględnić tylko jquery1.6.3? –

0

Spróbuj ten kod jedna linia

$(document).ready (function() { 
$('#dialog_modal_body').on("click", ".datepicker", function(){ 
     $("#ui-datepicker-div").css("z-index", "100000"); 
}); 
}); 
0

Dodaj ukrytego elementu przed nim, że będzie starał się do automatycznej regulacji ostrości.

To spowoduje, że Twój datepicker nie będzie skupiony podczas otwierania okna dialogowego.

<span class="ui-helper-hidden-accessible"><input type="text"/>Prevents autofocus from opening start datepicker on dialog load</span> 
Powiązane problemy