Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript验证输入的字符数量、文本长度和小数位数_Javascript_Asp.net_Validation - Fatal编程技术网

使用javascript验证输入的字符数量、文本长度和小数位数

使用javascript验证输入的字符数量、文本长度和小数位数,javascript,asp.net,validation,Javascript,Asp.net,Validation,我正在使用javascript验证来自ASPxGridView控件(DevExpress组件)内的文本框的输入 我正在使用此javascript代码验证它(通过OnKeyPress事件): 我用它来“屏蔽”一些字符,效果很好。 但是现在我想做一些更复杂的事情:我不希望用户在文本框中输入超过一个逗号 更复杂一点:这个文本框的最大长度是6。我希望它只允许两个小数位,并且在小数位之前最多允许三个数字。 例如: 我希望它允许这些字符串:“123,12”,“45,32”,“7,65”,“9,6”,“85,

我正在使用javascript验证来自ASPxGridView控件(DevExpress组件)内的文本框的输入

我正在使用此javascript代码验证它(通过OnKeyPress事件):

我用它来“屏蔽”一些字符,效果很好。 但是现在我想做一些更复杂的事情:我不希望用户在文本框中输入超过一个逗号

更复杂一点:这个文本框的最大长度是6。我希望它只允许两个小数位,并且在小数位之前最多允许三个数字。 例如: 我希望它允许这些字符串:“123,12”,“45,32”,“7,65”,“9,6”,“85,32”,“94,1”,“310,2”。 我不希望它允许这些字符串:“1123”、“125789”、“1234,2”

有什么办法吗

谢谢大家!

编辑:

我试着使用你们告诉我的两个正则表达式:

function CheckKey(s, e) {
    var key = ASPxClientUtils.GetKeyCode(e.htmlEvent);
    var char = String.fromCharCode(key);

    var text = document.getElementsByName(s.uniqueID)[0].value + char;

    var regEx = new RegExp("/^\d{0,3}(,\d{0,2})?$/");

    if(regEx.test(text))
        return;
    else
        ASPxClientUtils.PreventEvent(e.htmlEvent);

    return;
}
但是,
regEx.test(text)
始终返回false,即使输入与正则表达式匹配

另一次编辑:

我在上面的代码中更改了RegExp对象的实例化:

var regEx = new RegExp("/^\d{0,3}(,\d{0,2})?$/");
为此:

var regEx = /^\d{0,3}(,\d{0,2})?$/
现在成功了,谢谢你

/^\d{0,3}(,\d{0,2})?$/.test(textbox.value + char);
这将匹配任何小数点前三位的数字。或者,它允许一个小数点和最多两个小数点。还匹配空字符串,以便于使用。因此,这将检查以确保结果框匹配

对正则表达式的解释:

^
字符串开头

\d{0,3}
0至3位数字(含)

可选组

,\d{0,2}
逗号后跟0到2位数字(包括)


字符串结尾。

这适用于事后验证,但我认为OP正在寻找动态验证。在创建文本后立即执行
console.log(text)
,并将结果发布给我们。还包括事件发生时框的实际内容。不需要,我用我所做的更新问题,使其生效。非常感谢。(:
var regex_test = /^[1-9][0-9]{0,2},[0-9][0-9]{0,1}$/;
var string = '766,99';

if(regex_test.test(string)){
    console.log('good');
}
,\d{0,2}
$
var regex_test = /^[1-9][0-9]{0,2},[0-9][0-9]{0,1}$/;
var string = '766,99';

if(regex_test.test(string)){
    console.log('good');
}