我正在制作动态表单,而用户则从我的选择选项中选择菜单。从我的select元素中选择选项后,我生成一个包含必需元素的表单。一切正常。
完成所有操作后,我将from发送到另一个函数进行验证。在验证函数中,我使用$.each
函数从表单中获取元素。
问题是,我第一次得到'安慰'一次,第二次我'安慰'新的2次(但相同的形式),当我发送第3个表格功能并放入每个循环到控制台,我得到3次相同的第三种形式安慰......
我不想把第一张表格作为1次和第2次表格来控制或检查2次,3次1到3次处理。
我该如何解决这个问题?
我把一些功能放在我遇到问题的地方。如果需要完整的功能,请允许我提供。
var validateForm = function(form){
console.log('hi')
var submit = form.find(':submit'),
text = form.find(':text'),
select = form.find('select'),
checkBox = form.find('checkbox'),
file = form.find(':file'),
textarea = form.find('textarea');
console.log(form.length);
form.on('click', function(event){
console.log(event.target);
for(i=0;i<form.length;i++){
console.log($(this),i);
}
return false;
})
}
每次第二次或像这样的循环控制台(2次):
<input id="salesSubmit" type="submit" value="Send" name="salesSubmit">
ecomNation.js (line 16)
Object[fieldset]0
ecomNation.js (line 19)
<input id="salesSubmit" type="submit" value="Send" name="salesSubmit">
ecomNation.js (line 16)
Object[fieldset] 0
这里有什么问题?我该如何解决这个问题?
我的整个功能(99%)在这里:
var validateForm = function(form){
console.log('hi')
var submit = form.find(':submit'),
text = form.find(':text'),
select = form.find('select'),
checkBox = form.find(':checkbox'),
file = form.find(':file'),
textarea = form.find('textarea');
console.log(form.length);
form.on('click', function(event){
console.log(event.target);
for(i=0;i<form.length;i++){
console.log($(this),i);
}
return false;
})
}
var enquireyForm = function(option,form){
var contactForm = $('#contactForm'),
fieldSet = contactForm.find('fieldset:last'),
postUrl = '';
var generateForm = function(fields){
var optionalForm = "";
$.each(fields, function(i,field){
optionalForm += field.label ? "<label>"+field.label+"</label>" : '',
optionalForm += field.type === 'text' ? '<input id='+field.id+' name='+field.name+' type=text>' :
field.type === 'textarea' ? '<textarea id='+field.id+' name='+field.name+' ></textarea>' :
field.type === 'checkbox' ? '<input id='+field.id+' name='+field.name+' type=checkbox>' :
field.type === 'submit' ? '<input id='+field.id+' name='+field.name+' value='+field.value+' type=submit>' :
field.type === 'file' ? '<input id='+field.id+' name='+field.name+' type=file>':'';
optionalForm += field.note ? "<span>"+field.note+"</span>" : '';
postUrl = field.url ? field.url : '';
})
contactForm.attr('action',postUrl);
return optionalForm;
}
option.on('change',function(){
fieldSet.empty();
if(this.selectedIndex !== 0){
validateForm(fieldSet.append(generateForm(form[$(this).val()])));
}
})
}
我的HTML生成表单:
<form id="contactForm" action="" method="post">
<legend>Inquiry Form</legend>
<fieldset>
<label>Type of Inquiry*</label>
<select id='enquiry'>
<option selected='selected' value=''>Please select</option>
<option value='general'>General</option>
<option value='sales'>Sales</option>
<option value='careers'>Careers</option>
</select>
</fieldset>
<fieldset><!-- selected form fields goes here --></fieldset>
</form>