Hur kontrollerar jag enklast om ett värde från ett input-fält är:
1. Ett heltal
2. Ett decimaltal
3. En sträng
Kontrollera datatyp
6 svar · 326 visningar · startad av Web-Tor
Du har parseInt, parseFloat, isNaN
http://www.devguru.com/Technologies/ecmascript/quickref/js_functions.html
Jo, dom där funktionerna har jag hittat - men jag får dom inte att funkar. "1hulabandula" anses t.ex. vara ett heltal:
<head>
<script>
function c(){
var inp=document.getElementById('inp');
if(parseInt(inp.value))
alert("number")
else
alert("Not number")
}
</script>
</head>
<body>
<input type="text" id="inp" format="te">
<a href="#" onclick="c();">Send</a>
</body>
</html>
Beror på lite hur vill kontrollera. JavaScript använder exempelvis "." som decimalavgränsare meddans vi svenskar gärna använder ",". En annan fråga är om du vill se "10,0" som heltal eller decimaltal, och är allt som inte är varken decimaltal eller heltal en sträng?. Här är ett förslag:
function isDecimalTal(str){ str=(""+str).replace(/,/g,"."); return(!!str.match(/\.\d/)&&str*1==str ) }
function isHelTal(str){ return (!str.match(/\./)&&parseInt(str)==str); }
function isStrang(str){ return (!isHelTal(str)&&!isDecimalTal(str)) }
"-1,1","1,1", "1,0" och "1.1" är decimaltal.
"1" och "-1" är heltal.
"~1,0" är en sträng.
Prova detta då:
if(parseInt(inp.value)==inp.value)
edit: och här kommer jojoxx och glänser. ;)
mvh
Testa dessa:
function isInteger( p_value )
{
var re = /^[\d]+$/;
return re.test( p_value );
}
function isFloat( p_value )
{
var re = /^[\d]+\.[\d]+$/;
return re.test( p_value );
}
Kass att det inte finns färdiga funktioner för detta!? :x
Nu måste ju Jojoxx hitta på egna. :p
Tack!