2012-09-21 3 views
5

フォーム要素にフォーカスがあるときにフッターを非表示にしようとしています。また、フォーム要素がフォーカスを失ったときにフッターイベントを処理するためのフッターを表示する必要があります。 jQuery Mobileのselectmenuフォーム要素で、フォーカスやブラーイベントを発生させることはできません。ここでjQueryモバイルセレクトメニューフォーカスとブラーイベントが発生しません

は私のフォーム要素の一つの例である -

- ここ

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

は、焦点の私のフッターを非表示にし、(それはDOM内で準備ができている)ぼかしの上にそれを表示することになっているjQueryのコードです

$('.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 
    }); 

変更イベントハンドラは起動しますが、フォーカスとブラーは発生しません。

私は以下にこれを試してみましたが、それは動作しません -

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

私もこれを試してみました -

$('.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 
    }); 

私も(とfocusInを試してみました)と運とfocusout()イベントどちらか。私は何十ものセレクタを試しました(div.ui-selectはその1つでした)。私はそれが私が使用しているセレクターの問題ではないと思う。

私はjQuery Mobile 1.1.0とjQuery 1.7.1を使用しています - http://jquerymobile.com/test/docs/forms/selects/events.htmlでjQuery Mobileのselectmenuのドキュメントをチェックして、Googleと話をし、ここで検索してこの問題を見つけることができません。

+0

あなたの変更メソッド '$( '。selectList')。change'は少なくとも動作しますか? – Littm

+0

はい、変更イベントが発生します。 – Ross

答えて

4

これは私のために働いてしまったものです。

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 
} 

私はスタック上に、ここでこの出くわした - Show hide keyboard is not working propery in android phonegapとあなたが聞くことができ、これらの2つのイベントがあります気づきました。

1

は、私がコメントし

$('.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"); 
    });​ 

...フォーカスイベントを発生させたときに時々あなたが実行されるコードが表示されないため、それらの複数回発射ます。..フォーカスイベントをコメントアウトしてみてみてくださいフォーカスイベントアウトと他の2つのイベントが発火するように見える。.. がコメントを削除し、フォーカスイベントが複数回を解雇ご覧ください。..

チェックFIDDLE

+0

ありがとうございます。残念ながら、ブラーイベントは発生しません。私はアンドロイドキーボードがいつ存在しているかを何らかの形で知る必要があり、これはフォーム要素のフォーカスおよびブラーイベントハンドラによって可能です。 – Ross

1

これは、次の電子を使用して、私のために働きましたXAMPLE:

JS:#my_footerは私のフッターのIDです

<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> 

(以下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> 

あなたはこの例で試してみると、これはあなたがチームメイトのために働くかどうかを見ることがあります。S

この情報がお役に立てば幸いです。あなたの結果について教えてください。

+0

ありがとうございました。もう一度、変更イベントのみが発生したかった。私は解決策を考え出した、私は私のために働いたものを投稿するつもりだ。 – Ross

+0

あなたの歓迎相手:)。私はあなたの解決策を待っています:P – Littm

+0

私は評判が10以下であるため、自己回答に5時間以上待たなければなりません。私は明日ここに掲示します。ありがとうございました。 – Ross

関連する問題