通过两个验证阶段验证动态字段数

时间:2013-05-24 16:03:58

标签: javascript validation dynamic

我正在尝试创建一个库存系统。此库存系统基于MAC地址(12个字符,十六进制)的条形码。所以在一个页面上,我要求提供型号和用户想要添加的数量,这可以是2到100之间的任何位置,根据他们输入的内容,它们会在下一个时间显示相应数量的MAC地址字段页。我正在尝试做的是A)当输入12个字符时移动到下一个MAC字段并且B)验证输入的字符串是12个字符的十六进制字符串。这样,有人可以扫描每个条形码并流畅地完成整个过程。我遇到的问题是,它只是没有工作。我认为这是尝试调用动态输入字段。

Javascript:

function isValidMacAddress(mac) {
var RegExPattern = /^[0-9a-fA-F]+$/;

if (!(mac.match(RegExPattern)) || mac.length != 12) {
    return false;
} else {
    return true;
}
}

function valandmove() {
    var field = this.value+1;
    isValidMacAddress(this.value);
    if (this.value.length == 12) this.form.elements.field.focus();
}

PHP / HTML:

if($_POST['type'] == "rad") {
    echo '<div class="cell">Model</div><div class="cell">' . $label . '</div><br />';
    for($i=1;$i<=$quan;$i++) {
        echo '<div class="cell">' . $model . '</div><div class="cell"><input type="text" name="mac' . $i . '" maxlength=12 size=14 onKeyUp="valandmove()" /></div><br />';
    }

任何提示?

1 个答案:

答案 0 :(得分:0)

将isValidMacAddress更改为:

function isValidMacAddress(mac) {
    var RegExPattern = /^[0-9a-fA-F]+$/;

    if ((mac.match(RegExPattern)) && mac.length == 12) {
        return true;
    } else {
        return false;
    }
}

将valandmove更改为:

function valandmove(input, index) {
var field = input;
if (isValidMacAddress(field.value)) field.form[index+1].focus();
 }

更改为:

<input type="text" name="mac' . $i . '" maxlength=12 size=14 onKeyUp="valandmove(this, ' . $i .')" />