MooTools教程(8):输入过滤-数字

2016-02-20 00:40 6 1 收藏

下面这个MooTools教程(8):输入过滤-数字教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

今天我们来看看MooTools是怎样使得过滤用户输入变得非常轻松。我们今天将讲一些基本的数字过滤,明天再更深入地讲讲字符串过滤。

注意:JavaScript中的输入过滤只是为了保证(客户端)代码顺利执行,并不能替代服务器端的字符串过滤来保护你的应用程序不被注入攻击。

在第四讲的最后的一个例子中,我们从文本输入框获取RGB值,然后使用它们来改变页面背景色,今天我们首先来看看那个例子的部分代码,并以此展开我们这一讲。

rgbToHex()

从技术上讲,rgbToHex()方法实际上是属于的。由于它是一个来处理数字的数组方法,我们今天来学习一下这个方法。从功能上来讲,rgbToHex()使用起

来很简单:

参考代码:   changeColor(red_value, green_value, blue_value){     color = [red_value, green_value, blue_value].rgbToHex();     alert( + color); }

这很正常很完美,因为红色、绿色和蓝色的值都是数字。试试,如果当你传入了一些其他意外的东西:

在这个结果的最后你看到了一个NaN,NaN代表不是一个数字(Not a Number)。如果你把颜色的值作为硬编码写在代码里面,这种情况可能不会出现。但是如果你是从一个输入表单获得的这

个值,那么你很可能会碰到这样的情况,你需要去处理这样一些不符合要求的输入值。

toInt()

因此,现在我们需要一种方式确保传给rgbToHex()方法的参数都是数字这里就需要使用toInt()方法了。toInt()是另一个相对简单的函数。你可以在一个变量上调用它,那么它将尽可能地将它转换成一个整数。

参考代码:   toIntDemo = (make_me_a_number){     number = make_me_a_number.toInt();    alert ( + number);}

   

正如你说看到的,toInt()方法并不能处理所有你可以想到的情况,不过幸亏有了MooTools里面另外一个很酷的方法叫做$type(),我们也可以很好地处理那个问题。

$type()

$type()是另外一个来自MooTools的令人不可思议的简单和有用的东西。它可以检查你传入的无论什么变量,然后返回一个字符串,告诉你这个变量是什么类型:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)参考代码:   checkType = (variable_to_check){     variable_type = $type(variable_to_check);    alert( + variable_type);}

   

那里还有许多$type()方法可以检测的类型你可以在这个中找到一个完整的列表。不过现在,我们真正关心的是怎么检测整数。如果我们在

toIntDemo()方法中使用$type()方法,那么我们就可以很容易地处理那些toInt()不能处理的输入了:

参考代码:   toIntDemo = (make_me_a_number){         number = make_me_a_number.toInt();          ($type(number) != ){number = ;}    alert( + number);}

   

当我们把它们和changeColor()方法组合起来,我们就可以得到一个几乎接近完美的解决方案了:

参考代码:    = (red_value, green_value, blue_value){        red_value = red_value.toInt();    green_value = green_value.toInt();    blue_value = blue_value.toInt();          ($type(red_value)   != ){red_value = ;}     ($type(green_value) != ){green_value = ;}     ($type(blue_value)  != ){blue_value = ;}          color = [red_value, green_value, blue_value].rgbToHex();     alert( + color); }

   

最后一个方法中传给rgbToHex()方法的数字超过了RGB允许值0-255的范围,这个值还是被忠实地转换成了它的十六进制值。不幸的是,这意味着我们接受了一个超过那个范围的数字,我们将不能得到一个有效的十六进

制颜色值。幸运的是,MooTools中哎呦另外一个方法,我们可以用来处理这个问题。

limit()

MooTools中的方法也是非常简单直接的。你可以在一个数字上面调用这个方法,传入一个这个数字允许的最小值和一个允许的最大值作为参

数,它会自动地进行舍入处理。你还需要牢记这一点:limit方法需要传入整数参数,因此一般在使用limit方法之前先对你要指定为数字的东西(或者其他在

Number Collection)

参考代码:   limitDemo = (number_to_limit){        number_to_limit = number_to_limit.toInt();          limited_number = number_to_limit.limit(, );    alert( + limited_number);}

示例代码

把上面的方法和我们刚才的changeColor()方法混合起来试试:

参考代码:   changeColor = (red_value, green_value, blue_value){        red_value   = red_value.toInt();    green_value = green_value.toInt();    blue_value  = blue_value.toInt();          ($type(red_value)   != ){red_value = ;}     ($type(green_value) != ){green_value = ;}     ($type(blue_value)  != ){blue_value = ;}         red_value   = red_value.limit(, );    green_value = green_value.limit(, );    blue_value  = blue_value.limit(, );          color = [red_value, green_value, blue_value].rgbToHex();     alert( + color); }

   

更多学习

来源:https://www.tulaoshi.com/n/20160220/1632349.html

延伸阅读
参考下列程序: SubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii48OrKeyAscii57Then KeyAscii=0 EndIf EndSub->
标签: Web开发
直接看代码: 代码如下: (function($){ var keyCode={ BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, // NUMPAD_ADD: 107, // NUMPAD_DECIMAL: 110, // NUMPAD_DIVIDE: 111, // NUMPAD_ENTER: 108, // NUMPAD_MULTIPLY...
标签: Web开发
-------------------------------  onkeypress="if (event.keyCode 45 || event.keyCode 57) event.returnValue = false;" ------------------------------- 在文本框的 onkeypress事件中加入以上代码,屏蔽键盘事件中,输入值不是数字则返回为false
  可以用Javascript对文本框进行检查,过滤掉非0-9的字符。    <script language=" javascript " event="onkeydown" for="document"         if(event.srcElement.name=='TextBox1')         {         &...
标签: 软件教程 word
插入使用⑩以下的数字序号,想必大家都会吧,如果需要的数字序号超过十个怎么输入呢?针对这个问题,下面有个不错的方法,大家可以参考下。 描述:Word2010里面本身就有一个圈字符菜单栏,但是!这个里面弄出来的⑩,圆圈线条粗,而且一旦超过10,例如到11这个样子,圈圈就会把字盖住,到了12,2都给盖没有了。 插入符号,字体选择日文字体Ms...

经验教程

908

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部