Max Value with decimal 99.999 HTML block input - javascript

I'm trying to make the input takes only the value 99.999. I don't want to use MaxLength because it would not calculate the length of the decimal digits. I don't want to use any other functions that erase when it doesn't match a specific regex. I want it to stop it in the input.
function IsCurrencyNoMinus1 (e, thisobj, min, max) {
var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode == 44) || (keyCode == 46) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode))
var inStr = $(thisobj).val();
if (ret && (keyCode == 45) && ((thisobj.selectionStart != 0) || (inStr.indexOf('-') != -1)))
ret = false;
if (ret && (keyCode == 46) && (inStr != '' && inStr.indexOf('.') != -1) && !(Math.abs(thisobj.selectionStart - thisobj.selectionEnd) == inStr.length)) {
ret = false;
}
var dotPos = (inStr.indexOf('.') != -1) ? inStr.indexOf('.') : inStr.length;
inStr = inStr.replace(/\,/g, '');
var parts = inStr.split('.');
var maxParts = max.toString().split('.');
if (ret && (inStr != '' && (keyCode >= 48 && keyCode <= 57))) {
if ((parts[0].length >= maxParts[0].length) && ((thisobj.selectionStart - thisobj.selectionEnd) == 0)
&& (thisobj.selectionStart <= dotPos)) {
ret = false;
}
if (ret && (parts[1] != undefined && parts[1].length >= 2) && ((thisobj.selectionStart - thisobj.selectionEnd) == 0)
&& (thisobj.selectionStart > dotPos) && (thisobj.selectionStart <= dotPos + 3))
ret = false;
var firstPos = thisobj.selectionStart < thisobj.selectionEnd ? thisobj.selectionStart : thisobj.selectionEnd;
if (ret && (parts[0].length >= maxParts[0].length) && (parts[1] != undefined && parts[1].length >= 1)
&& ((dotPos - firstPos == 0 && Math.abs(thisobj.selectionStart - thisobj.selectionEnd) < 4)
|| (dotPos - firstPos == 1 && (Math.abs(thisobj.selectionStart - thisobj.selectionEnd) >= 2 && Math.abs(thisobj.selectionStart - thisobj.selectionEnd) < 4))))
ret = false;
}
if (Number(inStr) > max) {
thisobj.value = '';
ret = true;
}
if (Number(inStr) < min) {
thisobj.value = '';
ret = true;
}
// var re = new RegExp(/^\(?-?[0-9]{0,12}(\.[0-9]{0,2})?\)?$/)
// if (!re.test(inStr)) {
// thisobj.value = ""
// }
return ret
}

I found the solution! Please check the code below in case someone needs it.
function Format3DigitDecimal(e, thisobj, min, max)
{
var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode
var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode == 44) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode))
var inStr = $(thisobj).val()
inStr = inStr.replace(/\,/g, '')
if (ret && (inStr != '' && (keyCode >= 48 && keyCode <= 57)))
{
if ((inStr.length >= max.toString().length) && ((thisobj.selectionStart - thisobj.selectionEnd) == 0))
{
ret = false
}
}
if (ret && (inStr != '' && (keyCode >= 48 && keyCode <= 57)))
{
if ((inStr.length == 2) && ((thisobj.selectionStart - thisobj.selectionEnd) == 0))
{
ret = false
}
}
return ret
}

Related

Textbox allows numbers in a specific range - onkeypress onkeydown

I have a textbox that I want it to allow typing numbers from 0.00 to 24.00 only.
<asp:TextBox ID = "txtHours" runat = "Server"
onkeydown="limit(this,event);"
onkeypress="return validateFloatKeyPress(this,event);"
MaxLength="5" Width = "40" text = '<%#showData(Container.DataItem, "Hours")%>'/>
I tried using Javascript in onkeypress and onkeydown
It's still allowing typing numbers like 25,26,25.01... etc
I want it not to even allow typing 5,6,7...etc after 2 is typed.
function validateFloatKeyPress(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
var number = el.value.split('.');
var numberbfr = el.value.split('.')[0];
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
if (number.length > 1 && charCode == 46) {
return false;
}
if (numberbfr.length > 1) {
return false;
}
var caratPos = getSelectionStart(el);
var dotPos = el.value.indexOf(".");
if (caratPos > dotPos && dotPos > -1 && (number[1].length > 1)) {
return false;
}
return true;
}
function getSelectionStart(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart
}
function limit(el, evt) {
if (parseInt(el.value.charAt(0)) > 2 || (parseInt(el.value.charAt(0)) = 2 && parseInt(el.value.charAt(1)) > 4)) {
return false;
}
}
Try this.Hope this solution will help you.Copy and paste below code.'stack' is the id of the textbox.
function checkOnlyZeroTo24(evt, el) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (el.value == '' && !(charCode > 31 && (charCode < 48 || charCode > 57))) {
return true;
}
else if (el.value != '') {
if (el.value.charAt(0) < 3 && charCode == 46 && el.value.length == 1 && el.value.indexOf('.') == -1) {
document.getElementById('stack').setAttribute('maxlength', 4);
return true;
}
else if (el.value.charAt(0) < 3 && !(charCode > 31 && (charCode < 48 || charCode > 57)) && el.value.length == 1) {
document.getElementById('stack').setAttribute('maxlength', 5);
if (el.value.charAt(0) == 2 && (charCode < 48 || charCode > 52))
return false;
else
return true;
}
else if (el.value <= 24 && el.value >= 10 && charCode == 46 && el.value.indexOf('.') == -1) {
document.getElementById('stack').setAttribute('maxlength', 5);
return true;
}
else if (el.value.substr(0, el.value.indexOf('.')) <= 24 && el.value.substr(0, el.value.indexOf('.')) >= 10 && el.value.charAt(2) == '.' && !(charCode > 31 && (charCode < 48 || charCode > 57))) {
if (el.value.substr(0, el.value.indexOf('.')) == 24 && !(charCode == 48))
return false;
else
return true;
}
else if (el.value.charAt(0) < 3 && !(charCode > 31 && (charCode < 48 || charCode > 57)) && el.value.charAt(1) == '.') {
document.getElementById('stack').setAttribute('maxlength', 4);
return true;
}
else if ((el.value.charAt(0) >= 3 && charCode == 46 && el.value.indexOf('.') == -1) || (el.value.charAt(1) == '.' && !(charCode > 31 && (charCode < 48 || charCode > 57)))) {
document.getElementById('stack').setAttribute('maxlength', 4);
return true;
}
}
return false;
}
Asp:TextBox
<asp:TextBox ID = "stack" runat = "server" onkeypress="return checkOnlyZeroTo24(event,this);"> </asp:TextBox>

How to create a textbox in html to accept only real number using jquery?

$("#chartModal").keypress( function (e) {
if (e.which != 8 && e.which != 0 && e.which != 43 && e.which != 45 && e.which != 46 && (e.which < 48 || e.which > 57)) {
return false;
}
});
This accept +, - & . in between the number, which is not a number.
Try with this
$(document).ready(function () {
$('#chartModal').keypress(function(e) {
var key = e.charCode || e.keyCode || 0;
var keychar = String.fromCharCode(key);
if ( ((key == 8 || key == 9 || key == 46 || key == 35 || key == 36 || (key >= 37 && key <= 40)) && e.charCode==0) /* backspace, end, begin, top, bottom, right, left, del, tab */
|| (key >= 48 && key <= 57) ) { /* 0-9 */
return;
} else {
e.preventDefault();
}
});
});
Here is an example:
$('#chartModal').keypress(function(e){
if (e.which != 8 && e.which != 0 &&e.which!= 43 && e.which!=45 && e.which !=46 &&(e.which < 48 || e.which > 57)) {
return false;
}
var charCode = e.which;
var value=$(this).val();
if(charCode==43 && value.indexOf('+')>=0) //Check whether a + is already there at beginning
return false;
if (charCode == 45 && value.indexOf('-') >= 0)//Check whether a - is already there at beginning
return false;
if (charCode == 46 && value.indexOf('.')!=-1)//Check at least one . is present in the number
return false;
});
Replace #idname with id of input.

textbox validation for two numbers and two decimal values in asp.net with javascript

How to check textbox validation for two numbers and two decimal values in asp.net with javascript?
For Example whien i press the key in textbox it should allow me only xx.xx format, example : 12.25, 25.50,48.45 etc.
I got the answer.
<div>
<asp:TextBox ID="TextBox2" runat="server"
onkeypress="return isDecimalNumber(event,this);" MaxLength="5">
</asp:TextBox>
</div>
<script type="text/javascript" language="javascript">
var count = 0;
function isDecimalNumber(evt, c) {
count = count + 1;
var charCode = (evt.which) ? evt.which : event.keyCode;
var dot1 = c.value.indexOf('.');
var dot2 = c.value.lastIndexOf('.');
if (count > 2 && dot1 == -1) {
c.value = "";
count = 0;
}
if (dot1 > 2) {
c.value = "";
}
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
else if (charCode == 46 && (dot1 == dot2) && dot1 != -1 && dot2 != -1)
return false;
return true;
}
</script>
Try this,
$('.TextBox2').keypress(function (event) {
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
var text = $(this).val();
if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
event.preventDefault();
}
});
http://jsfiddle.net/hibbard_eu/vY39r/
$("#amount").on("keyup", function(){
var valid = /^\d{0,2}(\.\d{0,2})?$/.test(this.value),
val = this.value;
if(!valid){
console.log("Invalid input!");
this.value = val.substring(0, val.length - 1);
}
});

asp textbox only accept characters in IE8

I have a asp:TextBox and I need to validate that only accept characters.
Textbox
<asp:TextBox runat="server" id="txt" onkeypress="return AllowAlphabet(event)" />
Javascript
function AllowAlphabet(e)
{
isIE = document.all ? 1 : 0
keyEntry = !isIE ? e.which : event.keyCode;
if (((keyEntry >= '65') && (keyEntry <= '90')) || ((keyEntry >= '97') && (keyEntry <= '122')) || (keyEntry == '46') || (keyEntry == '32') || keyEntry == '45')
return true;
else
{
alert('Please Enter Only Character values.');
return false;
}
}
It works good in chrome, firefox but doesn't work in IE8.
what can I do make to it work?
Wouldn't this work for you?
function AllowAlphabet(e) {
e = e || window.event;
var keyEntry = e.which || e.keyCode;
var bIsCharacter =
(keyEntry >= 65 && keyEntry <= 90) ||
(keyEntry >= 97 && keyEntry <= 122) ||
(keyEntry == 46) ||
(keyEntry == 32) ||
(keyEntry == 45);
return bIsCharacter;
}

Enable ctrl+c and ctrl+v buttons in the function

I want to add the code to enable ctrl+c and ctrl+v in the function, the numbers are enabled and the alphabets are disabled. This function is used in the textbox, where the ctrl+c and ctrl+v are to be enabled but not the alphabets. I tried various things, but could not get through it. Any help in what do I modify in code to make them enable?
function item_checkInput(object, e, len, nr) {
var keycode, date, retval, value, newvalue, sel;
if (window.event) {
keycode = window.event.keyCode;
range = window.event.RangeOffset;
}
else if (e.which != 0) {
keycode = e.which;
range = e.rangeOffset;
}
else {
keycode = e.keyCode;
range = e.rangeOffset;
}
date = new Date();
value = object.value.replace(/\./g, "");
if ( (keycode >= 48 && keycode <= 57) && e.rangeOffset != undefined )
newvalue = value.substr(0,e.target.selectionStart) + String.fromCharCode(keycode) + value.substr(e.target.selectionEnd);
else if ( (keycode >= 48 && keycode <= 57) && document.selection )
{
document.selection.createRange().text = String.fromCharCode(keycode);
newvalue = object.value;
object.value = value;
}
else
newvalue = value;
if (!NotallNumbers(e)) {
return false;
}
if ( (keycode == 9) ) //tab (9)
{
if (newvalue.length == 13 && newvalue.substr(0, 7) == "10000") {
newvalue = newvalue.substr(7);
}
if (newvalue.length == 6) {
retval = check_itemnr(newvalue, nr);
if (retval == false) {
object.value = newvalue;
focusEnSelect(object, true);
}
object.value = newvalue;
}
return false;
}
else if ( (keycode == 8) || (keycode == 46) || (keycode >= 35 && keycode <= 40) )
return true;
else if ( (keycode >= 48 && keycode <= 57) && ((date.getTime() - itemnr_keypress) > interval_scan) ) {
if (newvalue.length == 13 && newvalue.substr(0,7) == "10000")
newvalue = newvalue.substr(7);
if ( (newvalue.length == len) ) {
retval = artnr_checknr_art(newvalue, nr);
if (retval == false) {
object.value = newvalue;
focusEnSelect(object, true);
} else {
object.value = newvalue;
return false;
}
return retval;
}
itemnr_keypress = date.getTime();
return true;
}
else if ( (keycode >= 48 && keycode <= 57) && (newvalue.length == 6) && (newvalue != "10000") ) {
itemnr_keypress = date.getTime();
retval = check_itemnr(newvalue, nr);
if (retval == false) {
object.value = newvalue;
focusEnSelect(object, true);
}
return retval;
}
else if ( (keycode >= 48 && keycode <= 57) && (newvalue.length == 13) ) {
itemnr_keypress = date.getTime();
if (value.substr(0, 7) == "10000") {
object.value = newvalue.substr(7);
retval = check_itemnr(newvalue.substr(7), nr);
if (retval == false) {
focusEnSelect(object, true);
}
return false;
}
else {
object.value = "";
return false;
}
return true;
}
else if (keycode >= 48 && keycode <= 57) {
itemnr_keypress = date.getTime();
return true;
}
else if (keycode == 106) {
retval = check_itemnr(newvalue, nr);
if (retval == false) {
object.value = newvalue;
focusEnSelect(object, true);
}
return false;
} else if (keycode == 13) {
if (newvalue.length == 13 && newvalue.substr(0, 7) == "10000") {
newvalue = newvalue.substr(7);
}
if (newvalue.length == 6) {
retval = check_itemnr(newvalue, nr);
if (retval == false) {
object.value = newvalue;
focusEnSelect(object, true);
}
object.value = newvalue;
}
return false;
} else if (newvalue.length > 13) {
return false;
}
return false;
}

Categories