|
|
![]() |
fidanras79@yahoo.com |
Bu script input alanındaki veya text areadaki sayıları virgülleme scriptidir.Girilen sayılar onKeyUp attributesi ile changed adlı fonksiyona iletilir.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 <html> 2 <head> 3 <title>Virgül Koyucuuuu,Büyük Sayılara Virgül Koyarım</title> 4 <script language="javascript"> 5 var numbers=new Array("0","1","2","3","4","5","6","7","8","9"); 6 var memory=""; 7 function changed(formName,inputField){ 8 //alert("hi"); 9 var display; 10 var obj=eval("document."+formName+"."+inputField); 11 display=obj.value; 12 memory=getNumber(display); 13 display=commaScreen(memory); 14 obj.value=display; 15 } 16 function getNumber(disp){ 17 var tempNum=""; 18 //alert("hi"); 19 for(var i=0;i<disp.length;i++){ 20 //alert("hi"); 21 for(var j=0;j<10;j++){ 22 //alert("hi"); 23 if(disp.charAt(i)==numbers[j]){ 24 //alert("hi"); 25 tempNum=tempNum+disp.charAt(i); 26 for(var k=0;k<tempNum.length;k++){ 27 if(tempNum.charAt(k)=="0"){ 28 tempNum=tempNum.substring(1,tempNum.length); 29 } 30 else{ 31 break; 32 } 33 } 34 break; 35 } 36 } 37 } 38 39 return tempNum; 40 } 41 function commaScreen(data){ 42 //alert("hi"); 43 var commadValue=""; 44 if(data.length>3){ 45 //alert("hi"); 46 var unDotted=data; 47 //alert(unDotted); 48 while(unDotted.length>3){ 49 commadValue=","+unDotted.substring(unDotted.length-3,unDotted.length)+commadValue; 50 //alert(commadValue); 51 unDotted=unDotted.substring(0,unDotted.length-3); 52 //alert(unDotted); 53 } 54 commadValue=unDotted+commadValue; 55 //alert(commadValue); 56 } 57 else{ 58 commadValue=data; 59 } 60 return commadValue; 61 } 62 </script> 63 </head> 64 <body> 65 <form name="myform"> 66 <INPUT type="text" size=50 name="screen" onkeyup="changed('myform','screen');"> 67 </form> 68 </body> 69 </html>
Bu fonksiyon (changed() fonksiyonu)formName ve inputField adlı 2 değişken alır.Bunun sebebi sayfada 1'den çok inputfield 'de sayı giriliyor ve siz hepsine aynı şeyi yaptırmak istiyorsanız form adını ve input adını vermelisiniz.Gördüğünüz üzere changed() fonksiyonu içinde obj adında bir object eval() fonksiyonu tarafından yaratılıyor.Bu fonksiyon (eval() fonksiyonu)çok yararlı bir fonksiyon olup stringden javascript fonksiyonları veya object üretmeye yarar.
Bu fonksiyon (changed() fonksiyonu)formName ve inputField adlı 2 değişken alır.Bunun sebebi sayfada 1'den çok inputfield 'de sayı giriliyor ve siz hepsine aynı şeyi yaptırmak istiyorsanız form adını ve input adını vermelisiniz.Gördüğünüz üzere changed() fonksiyonu içinde obj adında bir object eval() fonksiyonu tarafından yaratılıyor.Bu fonksiyon (eval() fonksiyonu)çok yararlı bir fonksiyon olup stringden javascript fonksiyonları veya object üretmeye yarar.
bizim örnekte
obj=eval("document."+formName+"."+inputField);
obj, input elementinin onkeyup() attiributesi ile fonksiyona gönderilen değerlerle;
obj=document.myform.screen;
olur.
Nasıl?Hoş ve kullanışlı bir fonksiyon değil mi?
javascript kodunun en üstünde tanımlanan 'memory' değişkeni ile ekrandaki sayının değeri(virgülsüz) tutulur. Bu string getNumber() fonksiyonuna inputField'den value alınıp gönderilir ve bu value içindeki sayı dışında tüm karakterler temizlenerek elde edilir. Yani 0'dan 9'a kadar olan sayılardan başka bir karakter girilirse bu dikkate alınmaz ve bu karakterler input field'in value'si tekrar set edildiğinde görünmeyecektir. Bu temizleme işlemi string'in charAt() fonksiyonu ile kontrol edilerek sağlanır.Bu fonksiyon bir 'int' değer alır ve bu int değer sayesinde stringin o karakteri alınır.örneğin;
var sentence="ben neyim? yasama amacim ne?"; alert(sentence.charAt(0));
kod parçası sentence stringinin 0. karakterini alır ve alert ile gösterir.
Biz bu özelliği bir döngü ile birlikte kullanarak stringin tüm karakterlerini kontrol edebilir ve sayı olmayanları atmak suretiyle yeniden sade bir string oluşturuyoruz.
Daha sonra stringe virgül koyma işlemine sıra geliyor. Bunun için commaScreen() fonksiyonu kullanıyorum.Bu fonksiyon memory değişkenini alıyor ve virgülleyip geri döndürüyor.Sondan başlayıp substring() fonksiyonu ile 3'er karakter parçalayıp virgül yerleştiriyor.Bu çok karışık değil.substring() fonksiyonu stringden başka bir string oluşturmayı sağlıyor. örneğin;
var sentence="ben neyim? yasama amacim ne?"; example=sentence.substring(4,9);
examle değişkeni "neyim?" olacaktır. yani 4 ve9. karakterler arası stringi alıp getiriyor. Bu sayede string virgüllenip tuşlara her basıp çekişte input'un value'si güncellenir.
|
|