2017-09-19 2 views
1

Ich habe eine Menge Textfeld, die negatives Vorzeichen nicht zulassen sollte, und "." Zeichen.verhindern Punkt in einem Textfeld

Ich habe einen jquery Block versucht, aber es '.' Erlauben. Ich möchte blockieren. in einem Textfeld

$(document).ready(function() { 
 
$('#used_quantity').keypress(function(event) { 
 
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { 
 
    event.preventDefault(); 
 
    } 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

Antwort

3

Sie mit keydown event.Only Übereinstimmung mit Schlüsselwert, nicht mit der Zeichenkette des Eingangs

Updated

mit Backspace

$(document).ready(function() { 
 
    $('#used_quantity').keydown(function(event) { 
 
    if ((event.which != 46) && (event.which < 48 || event.which > 57) && (event.which != 8)) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

+0

Dies macht es auch so haben Sie nicht Backspace, das ist auch das, was er will? – Granny

+0

sehe meine aktualisierte Antwort. Backspace Escaping von verhindern – prasanth

1

Sie müssen den Zustand event.which == 46 || event.which == 45 modifizieren, um die . und die - jeweils zu ignorieren.

$(document).ready(function() { 
 
    $('#used_quantity').keypress(function(event) { 
 
    if (event.which == 46 || event.which == 45 || event.which < 48 || event.which > 57) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

0

Ändern Sie den Zustand als (((event.which == 46 || event.which == 45 || $(this).val().indexOf('.') != -1)) || (event.which < 48 || event.which > 57)). dies auf keypress Ereignis

$(document).ready(function() { 
 
    $('#used_quantity').keypress(function(event) { 
 
    
 
    if (((event.which == 46 || event.which == 45 || $(this).val().indexOf('.') != -1)) || (event.which < 48 || event.which > 57)) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

+0

dieses erlaubende Zeichen – user3386779

+0

Sorry, ich habe nicht bemerkt, dass jetzt habe ich meine Bedingung als '((event.which == 46 || event.which == 45 || $ (this) .val () .indexOf ('.')! = -1)) || (event.which <48 || event.which> 57)) 'Jetzt funktioniert es. –

0

Versuchen:

$('#used_quantity').bind("change input", function() { 
    var value = $(this).val().replace(/([^0-9].*)/g, ""); 
    $(this).val(value); 
}) 
1

Bitte überprüfen Sie diesen Code. Es wird klappen. Entfernen

if ((event.which != 46 || $(this).val().indexOf('.') != -1) && 
(event.which < 48 || event.which > 57)) 

Zustand

if ((event.which < 48 || event.which > 57) && event.which != 45) { 

prüfen jsliddle EXAMPLE HERE

Verwandte Themen