wyrazenia reg. w JS

0

Witam

Chcialem sobie zrobic obsluge <ort>bleduw </ort>dla input, przykldowo mam taka wartosc ktora przesylam do mojej funkcji na zdarzeniu onKeyPress

val= 1 260.000

		function RegToCount(param_val)
		{    
			new_param= param_val.match(/[0-9(.), ]+/);
			
				if( new_param )		
					return true;
				else
				{
					alert('blad zle wyrazenie');
					return false;
				}	
		}

Chce uzyskac tylko dostep do : spacji, kropki, przecinka i cyfr od 0-9.
Gdy sparsuje parseFloat te wartosc to otrzymuje z 1 260.000 => 1. Wiec jak nie zrobie to nic nie dziala, gdzies jest jakis czeski blad, czy jak ???

0

parseFloat() zwróci ci liczby do pierwszego znaku który liczbą nie jest. Tym samym ciąg np. 546asd da 546.

sam regexp jest mało fajny :) lepiej:
/^\d+[., ]?\d*$/
czyli początek ciągu następnie co najmniej jedna cyfra później zero lub jeden znak ze zbioru [., ] a potem dowolna ilość cyfr i koniec ciągu :)

0
<script type="text/javascript">

function onlyDigit(e)
{
    var reg = /[0-9.,]/;
 	var key;


 	// IE
 	if(window.event)
   	    key = String.fromCharCode(e.keyCode);
 	// FF, Opera, Netscape
 	else
   	    key = String.fromCharCode(e.which);
    t=e.keyCode;
    return t==8||t==9||t==46||reg.test(key);
}
 
</script>


<form name="show">
	<input type="text" onkeydown="onlyDigit()" value="check" />
</form>

Pozdrawiam serdecznie

0

witam, mam jeszcze male pytanko jako parametr do ostatniej odpowiedzi co mam zdefiniowac ?, bo za bardzo nie jarze... ?

0

jakos sobie z tym poradzilem wyglada to tak :

		    var reg = /^[0-9]+[.]?[0-9]*$/;
		  
		    var obj = document.getElementById('count_art_main_'+idp+'').value;

		    if (reg.test(obj))
		    {
		    	document.getElementById('count_art_main').style.backgroundColor= 'white';	
		    	return true;
		    }
		    else
		    {
		    	obj= obj.substring(0,(obj.length)-1);
		    	document.getElementById('count_art_main_').style.backgroundColor= '#FF6347';
		    	alert('Nieprawidłowy znak, używaj tylko "0-9 ." - [kropka] użyta tylko raz !"');
		    	return false;
		    }	

Tylko jest problem z IE, w ogóle nie reaguje nie wyswietla nawet alert'a, nie koloruje nawet dynamicznego inputa, ktory sobie uprzednio stworzylem

0
dragon1985 napisał(a)

var reg = /[0-9.,]/;
Czyli że niby ".12,323.23,23.23,.,." jest poprawną lidzbą? ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1