如何在 javascript 或使用 jquery 中的 for-loop 问题中显示消息
How to show message in for-loop issues in javascript or using jquery
我试了将近两天了,还是不行。也许有人可以帮助 javascript 循环技术高超的人。
我有这个代码:
$(function(){
var len = $('#groupContainer > div').length;
var arr = [];
for(var i=0; i < len; i++){
var number = $('#number_' + [i + 1]);
var date = $('#date_' + [i + 1]);
var count = i + 1;
var message ="";
console.log(number)
var a = number.map(function(){
return this.value;
});
var b = date.map(function(){
return this.value;
});
var newObj = {number: a[0], date: b[0]}
arr.push(newObj);
}
var message = "";
for(var c = 0; c < arr.length; c++)
{
for(var d in arr[c])
{
message += 'Group: ' + [c + 1] + '\n';
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
message += d + ' is required!\n';
}
}
message = message + "\n";
}
}
alert(message);
});
预期输出:
如果组 1 中的所有字段都已填写且组 2 未显示提示框:
Group 2:
Number is required!
Date is required!
如果所有字段都未填写显示:
Group 1, 2 Number is required!
Group 1, 2 Date is required!
如果所有字段都已填满,则什么也不做。
这是我的 FIDDLE
你的 code here is too much complicated 应该被简化。
您需要将消息保存在 object
中,稍后循环查看它们以按顺序显示消息。
var messages = {};
var message = "";
for(var c = 0; c < arr.length; c++)
{
var groupMessage = false;
for(var d in arr[c])
{
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
if(messages[d]==undefined) {
messages[d]={groups:[]};
}
messages[d].groups.push(c+1);
}
}
}
var lastgroup = "";
for(i in messages) {
m = messages[i];
if(m.groups.join(",")==lastgroup) {
message = message.replace("Group "+m.groups.join(",")+" ","Group "+m.groups.join(",")+":\n");
message+=i+" is required!\n";
}
else {
message+="Group "+m.groups.join(",")+" "+i+" is required!\n";
}
lastgroup = m.groups.join(",");
}
// .....
}
$(function(){
var len = $('#groupContainer > div').length;
var arr = [];
for(var i=0; i < len; i++){
var number = $('#number_' + [i + 1]);
var date = $('#date_' + [i + 1]);
var count = i + 1;
var message ="";
var a = number.map(function(){
return this.value;
});
var b = date.map(function(){
return this.value;
});
var newObj = {number: a[0], date: b[0]}
arr.push(newObj);
}
console.log(arr);
var message = "";
for(var c = 0; c < arr.length; c++)
{
haveErrorInGroup = false;
for(var d in arr[c])
{
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
if(!haveErrorInGroup){
haveErrorInGroup= true;
message += 'Group: ' + [c + 1] + '\n';
}
message += d + ' is required!\n';
}
}
}
}
alert(message);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="groupContainer">
<div id ="profileGroup1">
<div class="item">
Number1: <input type="text" id="number_1" value="20">
</div>
<div class="item">
Date1: <input type="text" id="date_1" value="">
</div>
</div>
<div id ="profileGroup2">
<div class="item">
Number2: <input type="text" id="number_2" value="2015-05-05">
</div>
<div class="item">
Date2: <input type="text" id="date_2" value="">
</div>
</div>
</div>
我试了将近两天了,还是不行。也许有人可以帮助 javascript 循环技术高超的人。
我有这个代码:
$(function(){
var len = $('#groupContainer > div').length;
var arr = [];
for(var i=0; i < len; i++){
var number = $('#number_' + [i + 1]);
var date = $('#date_' + [i + 1]);
var count = i + 1;
var message ="";
console.log(number)
var a = number.map(function(){
return this.value;
});
var b = date.map(function(){
return this.value;
});
var newObj = {number: a[0], date: b[0]}
arr.push(newObj);
}
var message = "";
for(var c = 0; c < arr.length; c++)
{
for(var d in arr[c])
{
message += 'Group: ' + [c + 1] + '\n';
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
message += d + ' is required!\n';
}
}
message = message + "\n";
}
}
alert(message);
});
预期输出:
如果组 1 中的所有字段都已填写且组 2 未显示提示框:
Group 2:
Number is required!
Date is required!
如果所有字段都未填写显示:
Group 1, 2 Number is required!
Group 1, 2 Date is required!
如果所有字段都已填满,则什么也不做。
这是我的 FIDDLE
你的 code here is too much complicated 应该被简化。
您需要将消息保存在 object
中,稍后循环查看它们以按顺序显示消息。
var messages = {};
var message = "";
for(var c = 0; c < arr.length; c++)
{
var groupMessage = false;
for(var d in arr[c])
{
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
if(messages[d]==undefined) {
messages[d]={groups:[]};
}
messages[d].groups.push(c+1);
}
}
}
var lastgroup = "";
for(i in messages) {
m = messages[i];
if(m.groups.join(",")==lastgroup) {
message = message.replace("Group "+m.groups.join(",")+" ","Group "+m.groups.join(",")+":\n");
message+=i+" is required!\n";
}
else {
message+="Group "+m.groups.join(",")+" "+i+" is required!\n";
}
lastgroup = m.groups.join(",");
}
// .....
}
$(function(){
var len = $('#groupContainer > div').length;
var arr = [];
for(var i=0; i < len; i++){
var number = $('#number_' + [i + 1]);
var date = $('#date_' + [i + 1]);
var count = i + 1;
var message ="";
var a = number.map(function(){
return this.value;
});
var b = date.map(function(){
return this.value;
});
var newObj = {number: a[0], date: b[0]}
arr.push(newObj);
}
console.log(arr);
var message = "";
for(var c = 0; c < arr.length; c++)
{
haveErrorInGroup = false;
for(var d in arr[c])
{
if(arr[c].hasOwnProperty(d))
{
if(arr[c][d] == "")
{
if(!haveErrorInGroup){
haveErrorInGroup= true;
message += 'Group: ' + [c + 1] + '\n';
}
message += d + ' is required!\n';
}
}
}
}
alert(message);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="groupContainer">
<div id ="profileGroup1">
<div class="item">
Number1: <input type="text" id="number_1" value="20">
</div>
<div class="item">
Date1: <input type="text" id="date_1" value="">
</div>
</div>
<div id ="profileGroup2">
<div class="item">
Number2: <input type="text" id="number_2" value="2015-05-05">
</div>
<div class="item">
Date2: <input type="text" id="date_2" value="">
</div>
</div>
</div>