<script LANGUAGE="JScript"><!--
function AbortEntry(sMsg, eSrc)
{
window.alert(sMsg);
// set focus and highlight to the offending error
eSrc.focus();
//eSrc.select();
}
function HandleError(eSrc)
{
// make sure the input is a numeric value
var val = parseInt(eSrc.value);
if (isNaN(val))
{
return AbortEntry("Must be a number.", eSrc);
}
// make sure the value is not negative
if (val <= 0)
{
return AbortEntry("Please type a positive number", eSrc);
}
}
//-->
</script>
<input type="text" size="1" name="intQuantity" value="1" onChange="HandleError(this)"> st
Så här ser min kod ut. Om man sätter värdet till t.ex. -2 och
sedan klickar submit så får jag upp en alert-ruta... precis som jag
vill ha det. Men om jag sedan klickar på submit-rutan igen så
händer ingenting... inte alls som jag vill ha det. ;)
...
<script type="text/javascript">
<!--
function HandleError( o ){
var elm = o.elements[ "intQuantity" ];
for( var i=0; i < elm.length; i++ ){
if( isNaN( parseInt( elm[ i ].value ) ) ){
alert( "Must be a number." );
elm[ i ].focus();
return false;
}
else if( parseInt( elm[ i ].value ) <= 0 ){
alert( "Please type a number greater than zero." );
elm[ i ].focus();
return false;
}
}
};
//-->
</script>
...
Det är för att du i kontrollen (enligt scriptet som Peter skrev) kör parseInt() på värdet, och då kommer värdet "a32" att ge "32", som helt riktigt är ett tal.
parseInt( "a32" ) kommer inte att ge värdet 32, utan NaN, så skriptet skall fungera ( om du använder fler än ett "input"-element med namnet "intQuantity" d.v.s. Annars får du använda den första versionen jag postade ).
Fast å andra sidan är parseInt() onödig att ha med, så du kan gott och väl använda använda dectgaps förslag.
Sorry, jag hade visst lite fel.
Dock ger parseInt('32a') svaret 32, som alltså är ett tal, och om jag har förstått det hela rätt ska man bara få skriva tal i rutan.
Har du fortfarande problem att få det hela att fungera, trexter? Tänk på att du måste ha flera fält som heter "intQuantity", annars kommer scriptet inte att fungera.
Hmm... nu fungerar inte någonting längre. Kan jag få koden för:
a) Kolla igenom Flera fält och Inte tillåta "4m".
b) Kolla igenom Ett fält och Inte tillåta "4m".