2017-07-18 4 views
0
  • Wenn Eingabefeld fokussiert ist nicht, sollte keypress Ereignis
  • ausgelöst werden, wenn Eingabefeld fokussiert ist, sollte keypress Ereignis deaktiviert werden, und Eingabe von Text sollte dürfen.
  • Ich habe versucht, Fokus und Unschärfe, aber das hat nicht funktioniert.

HTMLaktivieren/deaktivieren Ereignis Tastendruck basierend auf Fokus in Eingabefeld

<div class="button"> 
<button class="btn">1</button> 
<button class="btn">2</button> 
<button class="btn">3</button> 

</div> 

<div class="form"> 
<form action="" id="submit"> 
    <input type="text" id="num" number/> 
</form> 
</div> 

<div id="show"></div> 

JQUERY

$(function($){ 
     //on click 
    $('.btn').click(function(){ 
       var me = $(this); 
     $('#show').html(me.text()); 
    }); 
    //on keypress 
    $(window).keypress(function(k){   
      switch (k.keyCode) {     
       // user presses the "1" 
      case 49: 
      $('#show').html(1); 
       break;   
       // user presses the "2" 
      case 50: 
      $('#show').html(2); 
       break; 

       // user presses the "3" 
      case 51: 
      $('#show').html(3); 
       break; 
      } 
    }); 

    //on submit 
    $('#submit').submit(function(e){ 
     e.preventDefault(); 
     var data = $('#num').val(); 
     $('#show').html(data); 
     $('#num').val(''); 
    }) 
}); 

JSFiddle

+0

Haben Sie 'k.preventDefault();' als erste Zeile in Ihrer Handler-Funktion versucht? – 31piy

Antwort

2

Versuchen Fokus Eigentum Ihrer Eingabefeld in keypress Ereignis Überprüfung wie:

if (!$('#num').is(':focus')) { 
    switch (k.keyCode) { 
    case 49: 
     $('#show').html(1); 
     break; 
     // user presses the "2" 
    case 50: 
     $('#show').html(2); 
     break; 
     // user presses the "3" 
    case 51: 
     $('#show').html(3); 
     break; 
    default: 
    } 
} 

Sie können es in Ihrer fiddle überprüfen, die ich aktualisiert habe.

+0

vielen Dank ... es funktioniert .. –

+0

Vielen Dank für die Annahme der Antwort. Froh, dass ich helfen konnte. Glückliche Kodierung. Prost !!! –

1

Versuchen mit event.preventDefault() .on Eingang keypress Ereignis auf Standardzustand

aktualisiert

Für alle Schlüssel verhindern in Eingabe hinzufügen event.preventDefault() in erster Linie der keypress Funktion

Updated fiddle

$(window).keypress(function(k) { 
    k.preventDefault() //its prevent all keyinput 
    switch (k.keyCode) { 

    case 49: 
     $('#show').html(1); 
     break; 
     // user presses the "2" 
    case 50: 
     $('#show').html(2); 
     break; 

     // user presses the "3" 
    case 51: 
     $('#show').html(3); 
     break; 
    default: 
     k.preventDefault() //its prevent keypress other than 1,2,3 
    } 
}); 
+0

funktioniert nicht .. drücken Sie num 1,2 oder 3 auf Textfeld .. nicht verhindern .. –

+0

siehe diese Geige https://jsfiddle.net/sn13LL3t/2/ .Sie müssen alle Tasteneingabe verhindern oder sehen Sie die aktualisierte Antwort – prasanth

+0

Entschuldigung, ich fragte eine falsche Frage..wie auch immer .. –

Verwandte Themen