国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

MooTools教程(8):輸入過濾-數字

2024-07-21 02:04:23
字體:
來源:轉載
供稿:網友

今天我們來看看mootools是怎樣使得過濾用戶輸入變得非常輕松。我們今天將講一些基本的數字過濾,明天再更深入地講講字符串過濾。

注意:javascript中的輸入過濾只是為了保證(客戶端)代碼順利執行,并不能替代服務器端的字符串過濾來保護你的應用程序不被注入攻擊。

在第四講的最后的一個例子中,我們從文本輸入框獲取rgb值,然后使用它們來改變頁面背景色,今天我們首先來看看那個例子的部分代碼,并以此展開我們這一講。

rgbtohex()

從技術上講,rgbtohex()方法實際上是屬于array集合的。由于它是一個來處理數字的數組方法,我們今天來學習一下這個方法。從功能上來講,rgbtohex()使用起

來很簡單:

參考代碼: [復制代碼] [保存代碼]
  1. function changecolor(red_value, green_value, blue_value){
  2.     var color = [red_value, green_value, blue_value].rgbtohex(); 
  3.     alert('converts to : ' + color); 
  4. }

這很正常很完美,因為紅色、綠色和藍色的值都是數字。試試,如果當你傳入了一些其他意外的東西:

在這個結果的最后你看到了一個“nan”,nan代表不是一個數字(not a number)。如果你把顏色的值作為硬編碼寫在代碼里面,這種情況可能不會出現。但是如果你是從一個輸入表單獲得的這

個值,那么你很可能會碰到這樣的情況,你需要去處理這樣一些不符合要求的輸入值。

toint()

因此,現在我們需要一種方式確保傳給rgbtohex()方法的參數都是數字——這里就需要使用toint()方法了。toint()是另一個相對簡單的函數。你可以在一個變量上調用它,那么它將盡可能地將它轉換成一個整數。

參考代碼: [復制代碼] [保存代碼]
  1. var tointdemo = function(make_me_a_number){
  2.     var number = make_me_a_number.toint();
  3.     alert ('best attempt : ' + number);
  4. }

   

正如你說看到的,toint()方法并不能處理所有你可以想到的情況,不過幸虧有了mootools里面另外一個很酷的方法叫做$type(),我們也可以很好地處理那個問題。

$type()

$type()是另外一個來自mootools的令人不可思議的簡單和有用的東西。它可以檢查你傳入的無論什么變量,然后返回一個字符串,告訴你這個變量是什么類型:

參考代碼: [復制代碼] [保存代碼]
  1. var checktype = function(variable_to_check){
  2.     var variable_type = $type(variable_to_check);
  3.     alert("variable is a : " + variable_type);
  4. }

   

那里還有許多$type()方法可以檢測的類型——你可以在這個core.$type()文檔中找到一個完整的列表。不過現在,我們真正關心的是怎么檢測整數。如果我們在

tointdemo()方法中使用$type()方法,那么我們就可以很容易地處理那些toint()不能處理的輸入了:

參考代碼: [復制代碼] [保存代碼]
  1. var tointdemo = function(make_me_a_number){
  2.     //try to make the input number
  3.     var number = make_me_a_number.toint();
  4.  
  5.     //if that didn't work, set number to 0
  6.     if ($type(number) != 'number'){number = 0;}
  7.     alert('best attempt : ' + number);
  8. }

   

當我們把它們和changecolor()方法組合起來,我們就可以得到一個幾乎接近完美的解決方案了:

參考代碼: [復制代碼] [保存代碼]
  1. var changecolor_2 = function(red_value, green_value, blue_value){
  2.     //try to make sure everything is an integer
  3.     red_value = red_value.toint();
  4.     green_value = green_value.toint();
  5.     blue_value = blue_value.toint();
  6.  
  7.     //set default values on anything thats not a number
  8.     if ($type(red_value)   != 'number'){red_value = 0;}
  9.     if ($type(green_value) != 'number'){green_value = 0;}
  10.     if ($type(blue_value)  != 'number'){blue_value = 0;}
  11.  
  12.     //calculate hex value
  13.     var color = [red_value, green_value, blue_value].rgbtohex(); 
  14.     alert('converts to : ' + color); 
  15. }

   

最后一個方法中傳給rgbtohex()方法的數字超過了rgb允許值0-255的范圍,這個值還是被忠實地轉換成了它的十六進制值。不幸的是,這意味著我們接受了一個超過那個范圍的數字,我們將不能得到一個有效的十六進

制顏色值。幸運的是,mootools中哎呦另外一個方法,我們可以用來處理這個問題。

limit()

mootools中的limit()方法也是非常簡單直接的。你可以在一個數字上面調用這個方法,傳入一個這個數字允許的最小值和一個允許的最大值作為參

數,它會自動地進行舍入處理。你還需要牢記這一點:limit方法需要傳入整數參數,因此一般在使用limit方法之前先對你要指定為數字的東西(或者其他在數字集合(里面的東西)使用toint()方法。

number collection)

參考代碼: [復制代碼] [保存代碼]
  1. var limitdemo = function(number_to_limit){
  2.     //do our best to get an integer
  3.     number_to_limit = number_to_limit.toint();
  4.  
  5.     //get the limited value
  6.     var limited_number = number_to_limit.limit(0255);
  7.     alert("number limited to : " + limited_number);
  8. }

示例代碼

把上面的方法和我們剛才的changecolor()方法混合起來試試:

參考代碼: [復制代碼] [保存代碼]
  1. var changecolor = function(red_value, green_value, blue_value){
  2.     //try to make sure everything is an integer
  3.     red_value   = red_value.toint();
  4.     green_value = green_value.toint();
  5.     blue_value  = blue_value.toint();
  6.  
  7.     //set default values on anything thats not a number
  8.     if ($type(red_value)   != 'number'){red_value = 0;}
  9.     if ($type(green_value) != 'number'){green_value = 0;}
  10.     if ($type(blue_value)  != 'number'){blue_value = 0;}
  11.  
  12.     //limit everything to the rgb scale (0 - 255)
  13.     red_value   = red_value.limit(0255);
  14.     green_value = green_value.limit(0255);
  15.     blue_value  = blue_value.limit(0255);
  16.  
  17.     //calculate hex value
  18.     var color = [red_value, green_value, blue_value].rgbtohex(); 
  19.     alert('converts to : ' + color); 
  20. }

   

更多學習

下載一個包含你開始所需要的全部東西的zip包

  • 標準的數字(number)處理功能函數
  • mootools的數字(number)處理功能函數
  • mootools的數組(array)處理功能函數
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 运城市| 靖边县| 青浦区| 七台河市| 霞浦县| 遵义市| 绵阳市| 镶黄旗| 什邡市| 北票市| 卢氏县| 腾冲县| 满城县| 明水县| 邳州市| 涞源县| 岗巴县| 嘉义县| 武清区| 贞丰县| 临沭县| 江川县| 凤台县| 镇巴县| 云龙县| 射阳县| 吐鲁番市| 新田县| 达尔| 阳曲县| 泗洪县| 汾阳市| 辽宁省| 铜川市| 九龙坡区| 定陶县| 孟连| 杨浦区| 乌兰浩特市| 久治县| 阿拉善右旗|