Nieoczekiwane zachowanie przeglądarek – wszystkich

Dzisiaj krótki wpis o zachowaniu wszystkich przeglądarek, które niezwykle mnie zaskoczyło.

W formularzu znajduje się pole tekstowe, które może być albo uzupełnione z palca, albo jego wartość może być wyliczona metodą javascriptową. Po wyliczeniu wartości pole ma zostać zablokowane (przy czym wystarczy blokada interfejsu).
"Co to za sztuka taki kawałek kodu postawić Łup Łup Łup jquery jako tako na kupę i gotowe".

$('#my-btn').click(function(e) {
var value = computeValue();
$('#my-field-id').attr('disabled', 'disabled').val(value);
});

Wydawałoby się że nic tu się nie da spier…ć, a jednak się da. Przy ustawieniu atrybutu disabled na elemencie input jego wartość nie jest wysyłana na serwer. I jest to zachowanie udokumentowane w w3schools

Rozwiązaniem tego problemu jest użycie atrybutu readonly zamiast disabled. Wadą tego rozwiązania jest brak wyszarzenia kontrolki (trzeba porzeźbić w css), co niekoniecznie musi się podobać biznesowi. Innym rozwiazaniem może być użycie pola ukrytego synchronizowanego z polem tekstowym. Oba rozwiązania mają wg mnie podobną pracochłonność.
Atrybut disabled nie wpływa na działanie metody val z jquery. Nie powinno też być problemów z bindingiem knockoutowym.

Google web elements

Przegladajac sieć natknąłem się na stronę Google Web page elements. Zachwyciła mnie łatwość ich zastosowania (wystarczy kilka linijek HTML + JS). Stwierdziłem że u siebie na stronie wykorzystam 2 z nich.

1) Translate pozwala skorzystać z serwisu Google Translate do przetłumaczenia zawartości strony. Sam na 100% nie będę nigdy podejmował prób przetłumaczenia materiałów tutaj prezentowanych, zwłaszcza że nie mam wejść z innych krajów niż Polska. A tłumaczenie zapewnione przez google może nie jest idealne ale wystarcza do zrozumienia sensu treści.

2) Virtual Keyboard pozwala na obsługę strony bez konieczności korzystania z fizycznej klawiatury (przy pomocy myszki lub ekranu dotykowego). Minusem tego gadżetu jest fakt że na Ubuntu pod Chrome rozwinięta klawiatura blokuje wpisywanie polskich znaków (pojawiają się ich polskie odpowiedniki) jednak zwinięcie klawiatury usuwa tą niedogodność.