如何在警告框中打印数字?

时间:2015-07-01 09:49:22

标签: javascript

当输入的两个数字相同时,此代码显示警告框,现在我想在警告框中显示数字,它只显示一个数字,但我想显示每个相同的数字,例如,如果我在两个输入框中输入83,在另外两个输入框中输入85,警告框应显示83和85,您不能多次输入这些数字。
    function validateForm(){

    for (var x = 0; x < 81; x++) {
        for (var y = x + 1; y < 81; y++) {
            if (document.forms["myForm"]['pk' + x].value == document.forms["myForm"]['pk' + y].value) {
                if (document.forms["myForm"]['pk' + x].value == "") {
                    return true;
                } else {
                    alert('You can not enter a number more than once');
                    return false;
                }
            }
        }
    }
    return true;
}

3 个答案:

答案 0 :(得分:1)

完全不同的做法,仅81次迭代,而不是3000次

function validateForm() {
    var q = {}, a = [];
    for (var i=0; i<81; i++) {
        var value = document.forms["myForm"]['pk'+i].value;
        if (value !== "") {
            if (q[value]) {
                if (q[value] < 2) {
                    a.push(value);
                }
                q[value] ++;
            }
            else {
                q[value] = 1;
            }
        }
    }
    if(a.length) {
        alert(a.join(', ') + ' You can not enter a number more than once');
        return false;
    }
    return true;
}

这会循环遍历所有值一次,保持计算每个值的数量(var q) - 如果值的计数值达到2,则将值添加到数组(var a)。因此,三倍,四倍等只会被报告一次。

如果a.length&gt; 0,显示警报并返回false

答案 1 :(得分:0)

不要在循环中使用return,否则声明变量说validate并在其中存储true和false值并在结尾返回它,否则函数执行将在返回时停止。修改后的代码是:

function validateForm() {
    var validate = true;
    for (var x = 0; x < 81; x++) {
        for (var y = x + 1; y < 81; y++) {
            if (document.forms["myForm"]['pk' + x].value == document.forms["myForm"]['pk' + y].value) {
                if (document.forms["myForm"]['pk' + x].value == "") {
                } else {
                    alert('You can not enter a number more than once. Duplicate number is:'+ document.forms["myForm"]['pk' + x].value);
                        validate =  false;
                    }
                }
            }
        }
        return validate;
    }

答案 2 :(得分:-1)

从您的代码中,这可以帮助您

 <script>
            function validateForm() {

        var val1,val2;
            for (var x=0; x<81; x++) {
                for (var y=x+1; y<81; y++) {
        val1 = document.forms["myForm"]['pk'+x].value;
        val2 = document.forms["myForm"]['pk'+y].value
                  if (document.forms["myForm"]['pk'+x].value==document.forms["myForm"]['pk'+y].value) {

                   if ( document.forms["myForm"]['pk'+x].value=="") {
                   return true;
                   }
                   else {
                    alert(val1 + 'and'+ val2 +',You can not enter a number more than once');
                    return false;
                    }
                  }else{
                   alert(val1 + 'and'+ val2 +',You can not enter a number more than once');
                    return false;
}


                }


              }


              return true;
            }



            </script>