[英]How to print the numbers in alert box?
此代码在输入的两个数字相同时显示警报框,现在我要在警报框中显示数字,它仅显示一个数字,但是我想显示每个相同的数字,例如,如果我在输入83两个输入框,另两个输入框为85,警报框应显示83和85,您不能多次输入这些数字。
函数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;
}
完全不同,仅进行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;
}
这会一次循环遍历所有值,并保持每个值有多少个计数(变量q)-如果一个值的计数达到2,则将值添加到数组中(变量a)。 因此,三元组,四元组等将仅报告一次。
如果a.length> 0,则显示警报并返回false
不要在循环内部使用return
,否则要声明一个变量,例如validate
并在其中存储true和false值,然后在最后将其返回,否则函数执行将在return处停止。 修改后的代码是:
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;
}
从您的代码中,这可以帮助您
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.