jQuery MiniUI

标题: 问个JS相关问题,不知道是不是跟miniui有关 [打印本页]

作者: carboncocoa    时间: 2012-6-13 14:12:08     标题: 问个JS相关问题,不知道是不是跟miniui有关


自定义规则函数
        function isFloat(v) {
            var re = new RegExp("^([+-])?\\d+(\.\\d+)?$");
            if (re.test(v)) return true;
            return false;
        }

注意条件部分如果我用\d则无论怎么输入都不通过
甚至用 ^\d$, 我输入数字都不可以
必须用 ^\\d$
我在网上查了一下,JS里貌似也是\d就可以啊
为什么这里不认呢


作者: niko    时间: 2012-6-13 16:23:04

function isFloat(v) {
    var v2 = parseFloat(v);
    if (isNaN(v2)) return false;
    return typeof v2 == 'number' && String(v) == String(v2);
}

可以用这个试试
作者: niko    时间: 2012-6-13 16:23:43

另外,你测试正则的时候,可以写纯JS来验证。
不需要miniui控件。

这样把问题分离清楚。
作者: carboncocoa    时间: 2012-6-13 16:41:00

谢啦,因为对js函数不太了解
刚才验证了一下
纯js没问题
代码如下
<script language="javascript" type="text/javascript">
function testregex(){
var str="123.202";
var reg =/^([+-])?\d+(\.\d+)?$/;
if (reg.test(str))
{
   alert ("通过验证!")
  }
  else
   {
    alert("验证失败!");
    }
}
testregex();
</script>

作者: factory    时间: 2012-6-14 15:33:20

我们的验证规则,默认页支持flaot:
http://miniui.com/demo/#src=form/rules.html
请仔细查看示例。比如:
<input class="mini-textbox" vtype="float" />

作者: carboncocoa    时间: 2012-6-15 09:32:14

关键是很多稍复杂的规则实现不了
比如身份证验证"^\d{15}$)|(^\d{17}([0-9]|x)\s$"
输入x肯定报错,如果用\x则整个页面全部出错
作者: niko    时间: 2012-6-15 10:02:22

这个是正则写法的问题,是JS的问题了。
作者: carboncocoa    时间: 2012-6-15 10:25:42

niko 发表于 2012-6-15 10:02
这个是正则写法的问题,是JS的问题了。

呵呵,肯定不是那么简单

<script language="javascript" type="text/javascript">

function testregex(){

var str="11112222333344444x";

var reg =/(^\d{15}$)|(^\d{17}([0-9]|x)$)/;

if (reg.test(str))

{

   alert ("success");

  }

  else

   {

    alert("failed");

    }

}

testregex();

</script>

顺利通过

但是用miniui规则自定义的就不行
跟miniui的字符过滤有关系
作者: carboncocoa    时间: 2012-6-15 10:40:13

        function isID(v) {
            var re = /(^\d{15}$)|(^\d{17}([0-9]|x)$)/;
            if (re.test(v)) return true;
            return false;
        }
这样写也不行呢




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2