这个jquery每个都关闭?如果是这样,我该如何解决这个问题呢?

时间:2013-01-09 14:47:29

标签: jquery

我正在制作动态表单,而用户则从我的选择选项中选择菜单。从我的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>

0 个答案:

没有答案