2016-06-13 2 views
0

Ich habe ein Eingabeelement und möchte sicherstellen, dass nur numerische Werte zulässig sind. Ich habe ein funktionierendes Beispiel gefunden here.erhalten Eingangswert auf Keydown und setzen Sie es auf andere Eingabe

Jetzt möchte ich den Wert dieses Feldes bekommen und es in ein anderes Eingabeelement schreiben:

$(".firstinput").keydown(function (e) { 
    // Allow: backspace, delete, tab, escape, enter and . 
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
     // Allow: Ctrl+A, Command+A 
     (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) || 
     // Allow: home, end, left, right, down, up 
     (e.keyCode >= 35 && e.keyCode <= 40)) { 
      var $this = $(this).val(); 
      $("copiedinput").val($this); 
      return; 
    } 
    // Ensure that it is a number and stop the keypress 
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 
     e.preventDefault(); 
    } 
}); 

Diese fast funktioniert, aber ich bekomme nur den Wert nach Eingabe oder Backspace drücken. Die Eingabe von '222' und die Rücktaste führen zu '22' für den ersten Eintrag und '222' für den .copied-Eintrag. Wie kann ich den Live-Wert erhalten?

+0

Haben Sie versucht, einen '' zusammen mit 'keyup' und' change' Event-Handler ? https://jsfiddle.net/mhv7u36q/ –

+0

Ich muss sicherstellen, dass nur Zahlen eingegeben werden können. Also die Nummer-Lösung funktioniert nicht für mich. – hes

Antwort

0

Try this:

$(".firstinput").keyup(function() { 
    $(".firstinput,.copiedinput").val($(this).val().replace(/[^\/\d]/g, "")); 
}); 

oder Handhabung keydown:

$(".firstinput").keydown(function(e) { 
    return (
     $.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
     (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) || 
     (e.keyCode >= 35 && e.keyCode <= 40) || 
     (e.keyCode >= 96 && e.keyCode <= 105) || 
     (!e.shiftKey && e.keyCode >= 48 && e.keyCode <= 57) 
    ); 
}).keyup(function() { 
    $(".copiedinput").val($(this).val()); 
}); 
+0

Danke, aber ich möchte es nicht einmal möglich machen, andere Zeichen als Nummern für .firstinput einzugeben. – hes

+0

Entschuldigung, es gab einen kleinen Fehler. Bitte überprüfen Sie das aktualisierte Keydown-Beispiel. – Vagharsh

+0

Allgemeine Idee ist, Schlüsselcode auf Keydown zu validieren und kopiertenInput auf keyup zu bevölkern. – Vagharsh

Verwandte Themen