2010-12-16 21 views
10

Mamy kontrolę wyboru daty JQuery w polu tekstowym tylko do odczytu. Ustawiamy tekst tylko do odczytu, aby użytkownicy nie mogli wprowadzać własnych dat. Działa to świetnie, ale chcemy umożliwić użytkownikom wyczyszczenie zawartości pola tekstowego po wybraniu daty.Jak wyczyścić pole tekstowe wyboru daty jQuery tylko do odczytu?

Jak możesz to zrobić? Wygląda na to, że ta funkcja była wbudowana w formant, ale była to removed.

Uwaga: możemy wyłączyć wejście w polu tekstowym za pomocą:

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

Aktualizacja: I rozwiązać ten z lekką zmianę wybranego odpowiedź:

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

powinieneś był odpowiedzieć na twoje pytanie, zamiast aktualizować rozwiązanie i zaznaczyć niewłaściwe rozwiązanie jako odpowiedź. Z pewnością zaoszczędzi to czasu wielu użytkownikom, takim jak ja, którzy spędzili wiele godzin na wdrażaniu "zaznaczonej odpowiedzi", a następnie stwierdzili, że nie była to poprawna odpowiedź. i poprawna odpowiedź jest kwestionowana jako aktualizacja. –

Odpowiedz

6

Jak o wykluczeniu keys, którego używa użytkownik, aby wyczyścić pole tekstowe, takie jak "del", "backspace" itp.?

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

naciśnięcie klawisza nie działa poprawnie w przypadku usuwania i backspace. 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; 
    } 
}); 

to powinno działać w przeglądarkach, które don't trigger keypress events for "delete" keys.

Powiązane problemy