2010-12-16 7 views
10

私たちは、読み取り専用のテキストボックスにJQueryの日付ピッカーコントロールを持っています。私たちはテキストボックスを読み取り専用にして、ユーザーが自分の日付を入力することはできません。これは素晴らしいですが、ユーザーが日付を選択した後にテキストボックスの内容を消去するオプションを提供したいと考えています。jQueryの日付ピッカーのテキストボックスをクリアするには?

どうすればいいですか?明らかに、この機能はコントロールに組み込まれていましたが、removedでした。

注:更新

$("#text-box").keypress(function (e) 
{ 
    e.preventDefault(); 
}); 

を:私たちが使用してテキストボックスに入力を無効に私が選択した回答のわずかな変化でこれを解決:除外についてどのように

myTextBox.keydown(function(e){ 
     if (e.keyCode == 46 || e.keyCode == 8) { 
      //Delete and backspace clear text 
      $(this).val(''); //Clear text 
      $(this).datepicker("hide"); //Hide the datepicker calendar if displayed 
      $(this).blur(); //aka "unfocus" 
     } 

     //Prevent user from manually entering in a date - have to use the datepicker box 
     e.preventDefault(); 
    }); 
+1

問題の解決策を更新し、間違った解決策を回答としてマークする代わりに、質問に回答してください。それは間違いなくあなたの 'マークされた答えを実装するために何時間も費やしてきた私のような多くのユーザーに時間を節約し、正解ではないことを知るでしょう。正しい答えは更新として問題になります。 –

答えて

6

keys 'del'、 'backspace'などのテキストボックスをクリアするためにユーザーが使用していますか?

$("#text-box").keypress(function (e) 
{ 
    switch(e.keyCode) { 
      case 46: // delete 
      case 8: // backspace 
      break; 
      default: 
      e.preventDefault(); 
      break; 
     } 
}); 
+1

keypressは実際に削除とバックスペースでは機能しません。 http://stackoverflow.com/a/1116253/2660342 –

2
 
$("#text-box").bind('keypress keydown', function (e) { 
    var tag = e.target.tagName; 
    if (e.which === 8 || e.which === 46) { 
    $(this).val(''); 
    $(this).datepicker("hide"); 
    $(this).blur(); 
    e.stopPropagation(); 
    e.preventDefault(); 
    return false; 
    } 
}); 

これはdon't trigger keypress events for "delete" keysブラウザ上で動作するはずです。

関連する問題