2016-07-05 141 views
-1

JSFiddle链接下面是一个工作表单,其中来自动态行的已提交表单值将使用ajax保存到mysql表中,而不会刷新任何页面。表单提交的结果(即成功或错误)将显示在div中,其中使用javascript的结果为id。仅插入复选框选定行值到MySQL表中

JSFiddle Demo

组成标记

<form name="names" id="names" method="post" action=""> 
    <div class="container"> 
    <div class="table-responsive"> 
     <button type="button" class="btn btn-success addmore">Add</button> 
     <button type="button" class="btn btn-danger delete">Remove</button> 
     <br /> 
     <table id="demo" class="table table-bordered table-condensed table-striped table-hover"> 
     <thead> 
      <tr> 
      <th> 
       <input class="check_all" type="checkbox" onclick="select_all()" /> 
      </th> 
      <th>First Name</th> 
      <th>Last Name</th> 
      </tr> 
     </thead> 
     <tbody> 

      <tr> 
      <td> 
       <input type="checkbox" class="case" /> 
      </td> 
      <td> 
       <input class="form-control" type="text" name="fname[]" id="fname_1" required> 
      </td> 
      <td> 
       <input class="form-control" type="text" name="lname[]" id="lname_1" required> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
     <button type="submit" class="btn btn-primary">Submit</button> 
</form> 

<div id="results"></div> 
<div id="results2"></div> 
</div> 
<!-- ./table-responsive --> 

</div> 

的Javascript对于添加/删除表行,复选框行(多个)选择

$(".delete").on('click', function() { 
    $('.case:checkbox:checked').parents("tr").remove(); 
    $('.check_all').prop("checked", false); 
    check(); 
}); 


var i = $('table tr').length; 


$(".addmore").on('click', function() { 
    count = $('table tr').length; 
    var data = "<tr><td><input type='checkbox' class='case'/></td>"; 
    data += "<td><input class='form-control' id='fname_" + i + "' name='fname[]' required/></td>"; 
    data += "<td><input class='form-control' id='lname_" + i + "' name='lname[]' required/></td></tr>"; 
    //alert(data); 
    $('table').append(data); 
    row = i; 
    i++; 
}); 



function select_all() { 
    $('input[class=case]:checkbox').each(function() { 
    if ($('input[class=check_all]:checkbox:checked').length == 0) { 
     $(this).prop("checked", false); 
    } else { 
     $(this).prop("checked", true); 

    } 
    }); 
} 

function check() { 
    obj = $('table tr').find('span'); 
    $.each(obj, function(key, value) { 
    id = value.id; 
    var selected = $('#' + id).html(key + 1); 

    }); 
} 

的Javascript提交表单使用Ajax

// form submission through ajax 
$(document).ready(function() { 
    $(function() { 
    $("#names").on("submit", function(e) { 
     e.preventDefault(); 
     $.ajax({ 
     type: "post", 
     url: "savename.php", 
     data: $(this).serialize(), 
     success: function(response) { 
      if (response == "Name creation successfull.") { 
      $("#results").html('<div class="alert alert-success"><button type="button" class="close">×</button>' + response + '</div><br>'); 

      } else { 
      $("#results2").html('<div class="alert alert-success"><button type="button" class="close">×</button>' + response + '</div><br>'); 

      } 

      //timing the alert box to close after 5 seconds 
      window.setTimeout(function() { 
      $(".alert").fadeTo(500, 0).slideUp(500, function() { 
       $(this).remove(); 
      }); 
      }, 2000); 

      //Adding a click event to the 'x' button to close immediately 
      $('.alert .close').on("click", function(e) { 
      $(this).parent().fadeTo(500, 0).slideUp(500); 
      }); 
      $('#names')[0].reset(); 


     }, 
     error: function(response) { 
      alert(response); 
     } 
     }); 
    }); 
    }); 

}); 

我想实现的就是这个,

  1. 用户首先选择他/她想要通过在每行开头选中复选框插入到mysql的表中的行。

  2. 选择行后,点击提交按钮后,只有那些选定的行值应该插入到mysql表中。

    试图通过尝试从这个网站上类似于这个网站的各种职位的解决方案,但没有成功。

回答

0

用户使用skobaljic(非常感谢你)在这个stackoverflow后提供的解决方案。现在使用此代码只能将所选行中的表单值发布到mysql表中。

Updated JSFiddle Working Demo

下面一行仅供调试,注释掉你完成之后。虽然代码工作并完成了工作,但对于JavaScript,我只是一个新手,所以需要专家的意见来标记这篇文章已解决。