2013-02-25 11 views
10

Daty wejściowe, takie jak <input type="date" name="due_date" id="due_date" min="2011-09-01" maxlength="10" class="span8"> w przeglądarce Chrome, umożliwiają użytkownikowi wyświetlenie "wyskakującego" kalendarza w celu wybrania daty. Zauważyłem wczoraj, że zachowanie się zatrzymało; wejście tylko pozwala użytkownikowi na strzałkę w górę/w dół części daty (miesiąc/dzień/rok). Odwiedziłem blog Chrome i przeszukałem wyszukiwarkę Google, ale nie mogę znaleźć żadnej wzmianki o tej zmianie. Dlaczego zmieniło się zachowanie input type="date"? Co ciekawe, zmiana ta wydaje się być ograniczona do Bootstrap, ponieważ http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_type_date nadal wyświetla datepicker.Dlaczego zmieniło się zachowanie `input type =" date "`?

+0

stworzyli JSFiddle pomocą CSS Bootstrap i nie wydaje się wpływać popup Chrome - http: //jsfiddle.net/BxVDx/3/ – Kasaku

+0

właśnie potwierdzono to Bootstrap kwestia przechodząc załadowania na dokumentację i "wkładania" '' do przykładowego formularza na http://twitter.github.com/bootstrap/base-css.html#forms. –

+1

@PirateKitten: I * do * widzę ten problem w twoim skrzypcach. Używam Chrome .... Wersja 25.0.1364.97 m. Ty? –

Odpowiedz

13

Aktualizacja Chrom zespół przyjął błąd i przedstawiła patch back to WebKit. Istotą zmiany jest to, że elementy sterujące datą będą renderowane wewnątrz elastycznego elementu pola, niezależnie od stylu zastosowanego do kontrolki input [type = 'date'].


Jestem tym that reported the defect referenced here to Chromium. Jednym z proponowanych rozwiązań jest zastosowanie wyświetlania: wbudowany blok; do kompletacji Kalendarz:

input[type="date"]::-webkit-calendar-picker-indicator{ 
    display:inline-block; 
} 

jednak, że jest słaby rozwiązanie, ponieważ kontrole są ciągle przesuwane do lokalizacji innej niż prawym uzasadnione na wejściu [type = „data”] kontrolnej.

Inną opcją jest unosić rację:

input[type="date"]::-webkit-calendar-picker-indicator { 
    display:inline-block; 
    margin-top:2%; 
    float:right; 
} 
input[type="date"]::-webkit-inner-spin-button { 
    display:inline-block; 
    float:right; 
} 

Ma to efekt uboczny odwrócenie kontroli Spinner i kalendarz Picker.

Najlepszym hack, myślę, że jest usunięcie tarczy i pływak rację:

input[type="date"]::-webkit-calendar-picker-indicator{ 
    display:inline-block; 
    margin-top:2%; 
    float:right; 
} 
input[type="date"]::-webkit-inner-spin-button { 
    /* display: none; <- Crashes Chrome on hover */ 
    -webkit-appearance: none; 
    margin: 0; 
} 

chrome 25 input[type="date"] defect hack-arounds

+1

+1 za otwarcie błędu w przeglądarce Chrome. –

+2

Należy zauważyć, że jeśli pływasz elementem, jego wyświetlacz jest ustawiony na 'blok', więc nie ma sensu próbować ustawić go na nic innego. Zobacz [ten artykuł CSS Tricks] (http://css-tricks.com/implied-block/) lub po prostu spójrz na styl obliczeniowy w narzędziach do Chrome Chrome. Mówiąc o tych narzędzi, ludzie mogą nie być świadomi, że można przejść do Ustawienia> Elements> Pokaż Cienia DOM zobaczyć elementy ('-webkit-inner-spin-button' etc) odniesione w tej odpowiedzi. – CherryFlavourPez

+0

Chrome w wersji 26.0.1410.43 m wyświetla ponownie wszystko poprawnie. –

6

aktualizowane

Znaleziony Problem

Bootstrap wykorzystuje atrybuty 2 styl ..

1 - display: inline-block co sprawia, google złamać strzałkę na innej linii

2 - wysokość: 20px, który uniemożliwia obejrzeniu tego „linia”

screenshot of findings

+0

widzę podobne zmiany, kiedy wyłączyć 'padding'. –

2

Aktualizacja

Google Chrome Problem został oznaczony jako regres, więc miejmy nadzieję, zostanie wkrótce naprawione. Jako tymczasowe obejście dodaje zadziała:

input[type=date]::-webkit-calendar-picker-indicator { 
    display: inline-block; 
} 

W ten sposób można utrzymać nakłady wyświetlić właściwości ustawione na co chcesz i wszystko działa jak przedtem.

Original Response

Ustawianie display: -webkit-inline-flex (co wydaje się być domyślna dla <input type="date" />) będzie rozwiązać ten problem, to może jednak zmieniać układ, ponieważ wejście jest traktowany jak element inline.

Wydaje mi się, że to błąd, sprawdzę, czy ktoś już zgłosił błąd, w przeciwnym razie.

+1

Występuje problem w bugtracker chromu, nie krępuj się, aby zagrać to, aby otrzymywać powiadomienia, gdy pojawia się aktualizacja i wyrazić swoje zainteresowanie w tym coraz rozwiązany: https://code.google.com/p/chromium/issues/detail ? can = 2 & start = 0 & num = 100 & q = data% 20picker & colspec = ID% 20Pri% 20Mstone% 20ReleaseBlock% 20OS% 20Area% 20Feature% 20Status% 20Owner% 20Summary & groupby = & sort = & id = 178175 – ximi

+0

Zobacz mój poprzedni komentarz :) –

+0

Dzięki @ximi . Ja również otwarty bilet bootstrap: http://github.com/twitter/bootstrap/issues/7061 –

Powiązane problemy