Hiii Rungss!!
Please try this code, you can get Cursor Postion As well as your required Validations.
Please let me know if you any doubts
<script>
function setCaretPosition(obj) {
if (!document.all) {return}
textElement =obj
if (textElement.createTextRange)
caretPosition = document.selection.createRange();
}
function setStatus(field,event,precision22) {
var isIE = document.all?true:false;
var isNS = document.layers?true:false;
var keyCodeValue = (isIE) ? window.event.keyCode : e.which;
if ( (keyCodeValue >47&& keyCodeValue <58)||keyCodeValue ==46)
{
var icaretPosition = (caretPosition) ? caretPosition : textElement.length;
icaretPosition.text = "|";
currentValue = textElement.value;
//return /^([01]?[0-9]|[2][0-3])(:[0-5][0-9])?$/
var str = new String; // create empty string
str= String.fromCharCode(keyCodeValue); // to store keypressedvalue
original_caretPosition=currentValue.indexOf( "|")
alert("Original Positon"+original_caretPosition)
rightbeforedot= currentValue.split(".")[0]
dotposition=currentValue.indexOf(".")
if(dotposition>original_caretPosition||dotpositi on==-1)
{
original_time=rightbeforedot.replace("|",str).repl ace(".","")
//alert("temporiginal_time"+original_time)
if(original_time<=11&&original_time.length<=2)
{
event.returnValue = true;
}
else
{
event.returnValue = false;
caretPosition.text="";
}
}
else
{ if(currentValue.indexOf(".")>=0)
{
dec_right=currentValue.indexOf(".")
original_time=currentValue.replace("|",str)
dec_left=original_time.substring(dec_right+1,origi nal_time.length)
if(dec_left>=60||keyCodeValue==46||dec_left.length >2)
{event.returnValue = false;
}
else
{ event.returnValue =true
caretPosition.text="";
}
}
}
caretPosition.moveStart("character", -1);
caretPosition.text="";
}
else
{
event.returnValue = false;
}
}
function setDefault(obj)
{
objvalue=obj.value
deciamlindex=objvalue.indexOf(".")
if(deciamlindex!=-1)
{
finaldecimal=objvalue.substring(deciamlindex+1,o bjvalue.length)
if(finaldecimal.length==1) //only one digit after decimal place checkfor it should not be greater than 6
{regExp=/[7-9]/
if(regExp.test(finaldecimal))
{
alert("Onchange"+objvalue)
alert("Invalid Fractional Part1")
obj.value=""
}
}
else
{
regExp=/([0-5][0-9])/g
if(!regExp.test(finaldecimal))
{
alert("Onchange"+objvalue)
alert("Invalid Fractional Part 2")
obj.value=""
}
}
}
}
function setDecimalValidation (field,event,precision22)
{
var isIE = document.all?true:false;
var isNS = document.layers?true:false;
var keyCodeValue = (isIE) ? window.event.keyCode : e.which;
if ( (keyCodeValue >47&& keyCodeValue <58)||keyCodeValue ==46)
{
var icaretPosition = (caretPosition) ? caretPosition : textElement.length;
icaretPosition.text = "|";
currentValue = textElement.value;
temp_original=currentValue;
original_caretPosition=currentValue.indexOf( "|")
var arr=currentValue.split("|");
leftValuetoCaret=arr[0]
rightValuetoCaret = arr[1]
if(leftValuetoCaret.indexOf(".")>=0)
{
dec_right=temp_original.indexOf(".")
dec_left=temp_original.substring(dec_right+1,tem p_original.length)
dec_left_length=dec_left.length
if(keyCodeValue!=46&&dec_left_length<((precision22 )+1))
{ event.returnValue = true;}
else
{ event.returnValue = false;}
}
if((rightValuetoCaret.indexOf(".")>=0)&&keyCodeVal ue ==46)
{event.returnValue = false;}
caretPosition.moveStart("character", -1);
caretPosition.text="";
}
else
event.returnValue = false;
}
function setOnlyNumbers(obj)
{
var isIE = document.all?true:false;
var isNS = document.layers?true:false;
var keyCodeValue = (isIE) ? window.event.keyCode : e.which;
if (keyCodeValue < 47 || keyCodeValue > 57)
event.returnValue = false;
else
event.returnValue=true;
}
</script>
</head>
<body >
<form>
<table><tr>
<td>Decimal Check Only [0-59]<input name="txt" onkeypress="setCaretPosition(this);s etStatus(this,event)" onchange="setDefault(this )"></td>
</tr>
<tr><td>Allow only 5 Digits After Decimal Point[Even cursor is placed just After Decimal Dot]<input name="txt2" onkeypress="setCaretPosition(this); setDecimalValidation(this,event,5)" ></td>
<tr><td>No Decimal Allowed(only numbers)<input name="txt32" onkeypress="setOnlyNumbers(event)" ></td>
</tr>
</table>
</form>
<br>
</body>
</html>
Hope this will help you
Cheers :)
vinod
|