2017-05-11 1 views
0

ich habe diesen code zu akzeptieren gültig int oder float nummern.Erlaube float auf 'eingang' nicht nur auf 'keypress' ereignis

$("input").on("keypress", function(event) { 
     $(this).val($(this).val().replace(/[^0-9\.]/g, '')); 
     if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { 
     event.preventDefault(); 
     } 
}); 

aber ich war nicht in der Lage Benutzereingabedaten von copy-paste und rightclick-paste Ereignisse zu fangen.

Ich versuchte $("input").on("input",..., aber nicht funktioniert. Bitte beachten Sie die untenstehende Geige-Demo.

Fiddle Demo

+0

Eingang sollte funktionieren, was funktioniert nicht genau? – epascarello

+0

@epascarello Eingangsereignis nicht funktioniert https://jsfiddle.net/jcjncyr6/2/ – bumbumpaw

+0

Paste funktioniert für mich dort .... – epascarello

Antwort

1

Sie können zum Einfügen Ereignis hören und numerische prüfen erst nach einer 0ms setTimeout der Wert einzulassen eingefügt werden. Sie werden aufblitzen sehen, was in so eingefügt wird, es ist keine ideale Lösung, aber könnte praktikabel sein.

$("input").on("keypress", function(event) { 
    $(this).val($(this).val().replace(/[^0-9\.]/g, '')); 
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { 
    event.preventDefault(); 
    } 
}); 


$("input").on("paste", function(event) { 
    var element = $(this); 
    setTimeout(function(){ 
    element.val(element.val().replace(/[^0-9\.]/g, '')); 
    }, 0); 
}); 
Verwandte Themen