2016-01-01 6 views
1

Предположим, у меня есть стол. Каждая строка содержит поля формы, которые пользователь может заполнить или не использовать. Мне нужно проверить, что для каждой строки заполняются все поля формы или нет.Проникнуть через поля в форме

HTML, заключается в следующем:

<tr class="riga_gar"> 
    <td class="report">  
     <input type="hidden" id="crediti[<?php echo $i; ?>]" name="crediti[<?php echo $i; ?>]" 
        value="<?php echo $cred['id_cre']; ?>" > 
      <?php echo $cred['id_cre'] ?> 
    </td> 
    <td class="report gbv" data-gbv="<?php echo $cred['gbv_tot']; ?>"> 
     <?php echo num2cur($cred['gbv_tot']); ?> 
    </td> 
    <td class="report"> 
     <?php echo veicolo2name($cred['titolare'],$pdo); ?> 
    </td> 
    <td class="report"> 
     <?php echo $cred['stato']; ?> 
    </td> 
    <td class="report"> 
     <input class="input_field numerico" id="chiesto" type="text" name="garanzia[<?php echo $i; ?>]" value="<?php echo $chiesto; ?>"> 
    </td> 
    <td class="report"> 
     <select name="tipo_gar[<?php echo $i; ?>]"> 
      <option value="">Scegli</option> 
      <?php foreach($tipo_gars as $tipo_gar){ 
       echo '<option value="'.$tipo_gar['id'].'">'.$tipo_gar['descrizione'].'</option>'; 
          }?> 
     </select> 
    </td> 
</tr> 

То, что я пытаюсь сделать, это проверить, что для каждой строки как вход и выберите иметь значение или ничего.

Я начал с этим JS:

function ajax_submit(){ 
    var submit_val=$("#garante").serialize(); 
    dest="anagrafiche/new_garante1.php"; 
    $('.riga_gar').each(function(i,obj){ 
     if ($(this).val()!='') { 
     } 
    }); 
} 

, и я хочу, чтобы запустить эту АЯКС функцию:

$.ajax({ 
    type: "POST", 
    url: dest, 
    data: submit_val, 
    success: function(data){ 
     data1=data.split("|"); 
     if(data1[0]=="Successo"){ 
      $("#spnmsg").fadeTo(200,0.1, 
      function(){$(this).removeClass().addClass("spn_success").html(data1[1]).fadeTo(900,1)}); 
     }else if(data1[0]=="Errore"){ 
      $("#spnmsg").fadeTo(200,0.1, 
      function(){$(this).removeClass().addClass("spn_error").html(data1[1]).fadeTo(900,1)}); 
     } 
    }, 
    complete: function(){ 
     $.fancybox.close(); 
    //setTimeout(function(){ $('.container').load('sofferenze/dashboard.php?from=<?php echo $id_soff ?>');},3000); 
    setTimeout(function(){ 
     $('#upper').load('sofferenze/soff.php?soff=<?php echo $id_soff ?>'); 
     $("#spnmsg").fadeTo(200,0.1, 
      function(){$(this).removeClass().addClass("spn_normal").html('Cruscotto della sofferenza <?php echo soff2name($id_soff,$pdo); ?>').fadeTo(900,1)}); 
    },3000); 
    } //chiudo complete function 
}); //chiudo $.ajax 

только тогда, когда:

  1. по крайней мере, одна строка имеет оба значения;
  2. все строки, имеющие значения, имеют оба из них;

но я застрял в том, как обращаться к значению ввода и выбирать в каждом цикле, чтобы я мог проверить свои условия.

+0

выбора имеет значение по умолчанию я думаю, вы просто хотите проверить, если вход заполнен или нет? – Farhan

+0

Я вижу только одну строку в вашем HTML - вы имели в виду, что вам нужно проверить, заполнено ли значение в одном из столбцов? –

+0

№. Выберите, чтобы не было значения по умолчанию. Но проблема не в условиях. Точка в каждом: как сослаться на вход и выбрать, которые находятся в строке, выбранной каждым –

ответ

0

Я думаю, это поможет вам. Это будет читать каждую строку и игнорировать скрытое поле. После того, как код найдет оба значения, заполненные, чем переменная validateForm, будет истиной и станет ложной, если в следующей строке одно значение с входа или выбора будет пустым.

$(document).ready(function(){ 
    var validateForm = false; 
    var check = 0; 
    $("form").on('submit',function(){ 
     $("tr").each(function(){ 
      console.log($.trim($(this).find("input.input_field").val()) +", "+ $.trim($(this).find("select").val())); 
      if($.trim($(this).find("input.input_field").val()) != "" && $.trim($(this).find("select").val()) != ""){ 
       validateForm = true; 
      } 
      else{ 

       if($.trim($(this).find("input.input_field").val()) == "" && $.trim($(this).find("select").val()) != ""){ 
        if(validateForm){ 
         validateForm = false; 
         check = 1; 
         return false; 
        } 
       } 
       if($.trim($(this).find("input.input_field").val()) != "" && $.trim($(this).find("select").val()) == ""){ 
        if(validateForm){ 
         validateForm = false; 
         check = 1; 
         return false; 
        } 
       } 

      } 

     }); 
     if(validateForm && check == 0){ 
       validateForm = true; 
      } 
     else{ 
      validateForm = false; 
     } 
     if(validateForm){ 
      //call ajax 
     } 
    }); 
}); 

Демо: https://jsfiddle.net/87tkraas/

0

Это непроверенные, но как о чем-то вроде этого:

var allowSubmit = false; 

$("form").on("submit", function(e) { 
    $("tr").each(function() { 
     var input = $(this).find("input").val(); 
     var select= $(this).find("select").val(); 
     if ((input == "" && select != "") || (input != "" && select == "")) { 
      return; 
     } else if (input != "" && select != "") { 
      allowSubmit = true; 
     } 
    }); 
    if (allowSubmit == false) { 
     e.preventDefault(); 
    } 
}); 
Смежные вопросы