2012-09-21 14 views
5

Próbuję ukryć stopkę, gdy fokus ma fokus. Chcę również wyświetlać stopkę, gdy element formularza straci ostrość, którą powinno obsługiwać zdarzenie blur. Nie mogę uzyskać fokusu lub rozmycia zdarzenia w celu uruchomienia elementu formularza jQuery Mobile selectmenu.Zdarzenie jQuery Mobile selectmenu fokus i rozmycie nie zostanie uruchomione.

Oto przykład jednego z moich elementów formularza -

<select id="radiology-study-provider" class="selectList"></select> 

Oto kod jQuery, która ma ukryć moje stopki na ostrości i pokazać go na rozmycie (jest wewnątrz DOM gotowy) -

$('.selectList').change(function(){ 
     console.log("the change event is firing"); 
    }); 
    $('.selectList').focus(function(){ 
     $('div:jqmData(role="footer")').hide(); // hide the footer 
    }); 
    $('.selectList').blur(function(){ 
     $('div:jqmData(role="footer")').show(); // show the footer 
    }); 

To dziwne, że funkcja obsługi zdarzenia zmiany jest uruchamiana, ale ostrość i rozmycie nie będą wykonywane.

Próbowałem to poniżej i to nie zadziała -

$('.selectList').on('focus', function(){ 
     $('div:jqmData(role="footer")').hide(); // hide the footer 
    }); 
    $('.selectList').on('blur', function(){ 
     $('div:jqmData(role="footer")').show(); // show the footer 
    }); 

Próbowałem też to -

$('.selectList').bind("focus", function(event, ui) { 
     $('div:jqmData(role="footer")').hide(); // hide the footer 
    }); 
    $('.selectList').bind("blur", function(event, ui) { 
     $('div:jqmData(role="footer")').hide(); // hide the footer 
    }); 

Próbowałem też focusIn() i focusOut() zdarzenia bez powodzenia zarówno. Próbowałem kilkudziesięciu selektorów (div.ui-select był jednym z nich). Nie sądzę, że jest to problem z selektorem, którego używam.

Używam jQuery Mobile 1.1.0 i jQuery 1.7.1 - Sprawdziłem dokumentację jQuery Mobile pod adresem http://jquerymobile.com/test/docs/forms/selects/events.html, rozmawiałem z wyszukiwarką Google, szukałem tutaj i nie mogę znaleźć tego problemu.

+0

Hej mat, czy twoja metoda zmiany '$ ('. SelectList'). Change' działa co najmniej? – Littm

+0

Tak, zostanie wywołane zdarzenie zmiany. – Ross

Odpowiedz

4

To właśnie dla mnie zadziałało.

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 
    document.addEventListener("hidekeyboard", onKeyboardHide, false); 
    document.addEventListener("showkeyboard", onKeyboardShow, false); 

} 

function onKeyboardHide() { 
    $('div:jqmData(role="footer")').show(); // show the footer 
} 

function onKeyboardShow() { 
    $('div:jqmData(role="footer")').hide(); // hide the footer 
} 

natknąłem to tutaj na stosie - Show hide keyboard is not working propery in android phonegap i zauważyłem tam są te 2 zdarzenia można nasłuchiwać.

1

Przymierz zakomentowanie zdarzenie ostrości i spróbować .. Czasem, gdy zdarzenie pożary nacisk jest zwolniony wiele razy z powodu których nie widzisz kodu, który jest wykonywany ...

$('.selectList').change(function(){ 
     alert("the change event is firing"); 
    }); 

// $('.selectList').focus(function(){ 
// $('div:jqmData(role="footer")').hide(); // hide the footer 
// alert("Focus event is firing"); 
// }); 

    $('.selectList').blur(function(){ 
     //$('div:jqmData(role="footer")').show(); // show the footer 
     alert("Blur event is firing"); 
    });​ 

ja skomentowałem na zdarzenie ostrości, a dwa inne wydarzenia wydają się ognia .. Usuń komentarze i widzisz zdarzenie ostrości wyrzucenie wiele razy ..

Sprawdź FIDDLE

+0

Dziękuję za sugestię. Niestety zdarzenie blur nie zostanie uruchomione. Muszę jakoś wiedzieć, kiedy klawiatura Android jest obecna i jest to możliwe za pomocą funkcji obsługi zdarzeń skupienia i rozmycia na elementach formularza. – Ross

1

ten pracował dla mnie za pomocą poniższego e XAMPLE:

JS:

<script> 
    document.addEventListener("deviceready", function(){}, false); 

    $(function() { 
     $('.selectList').change(function(){ 
      console.log("the change event is firing");          
     }); 

     $('.selectList').focus(function(){ 
      console.log("FOCUS"); 
      $('#my_footer').hide(); // hide the footer 
     }); 

     $('.selectList').focusout(function(){ 
      console.log("FOCUS OUT"); 
      $('#my_footer').show(); // show the footer 
     }); 
    }); 
</script> 

gdzie #my_footer jest id mojej stopce (sprawdź poniższy kod HTML).

HTML:

<body> 
    <div data-role="page"> 
     <div data-role="content"> 

      <select id="radiology-study-provider" class="selectList"> 
       <option value="1">A</option> 
       <option value="2">B</option> 
       <option value="3">C</option> 
      </select> 

     </div> 
    </div> 
</body> 

można spróbować w tym przykładzie i sprawdzić, czy to działa dla Ciebie kolego: S

Nadzieja to pomaga. Daj mi znać o twoich wynikach.

+0

Dziękuję bardzo za pomoc. Jednak po raz kolejny tylko wydarzenie zmiany chciało wystrzelić. Jednak wymyśliłem rozwiązanie, zamierzam opublikować to, co sprawdziło się dla mnie. – Ross

+0

Twój partner powitalny :). Jestem ciekawy, na czym polegał problem: S ... Będę czekał na twoje rozwiązanie: P – Littm

+0

Muszę poczekać jeszcze 5 godzin na samo-odpowiedź, ponieważ mam mniej niż 10 punktów reputacji. Wrzucę to tutaj jutro. Jeszcze raz dziękuję. – Ross

Powiązane problemy