Jquery从循环中获取输入值

I want to make an inline editing solution using php, jquery, ajax

My Loop:

$a=0;

  while($row = $db->fetch_array($res)){
  if($a%2==1){
  $class = 'class="even"';
  }
  else{
  $class = 'class="odd"';
  }
  $a++;

Html Table:

   <tr <?php echo $class; ?>>
    <td class="th table-check-cell sorting_1"><input type="checkbox" name="zones_id[]" value="<?php echo $row['zone_id']; ?>"></td>
    <td><?php echo $a; ?></td>
    <td><?php echo $row['zone_name']; ?></td>
    <td><?php echo $row['zone_position']; ?></td>
    <td><?php echo $row['status']; ?></td>

    <td class="table-actions">
    <a href="javascript:void(0);" title="Edit" class="with-tip" onclick="slidemenu('innerlinks_<?php echo $a; ?>')"><img src="images/icons/fugue/pencil.png" width="16" height="16"></a></td>
    </tr>

    <tr style="display:none;" id="innerlinks_<?php echo $a; ?>" class="sub">
    <td><?php echo $a; ?></td>
    <td><input type="checkbox" /></td>
    <td><input type="text" class="zn" name="zone_name" id="zone_name" value="<?php echo $row['zone_name']; ?>" /></td>
    <td><input type="text" name="zone_pos" id="zone_pos"  value="<?php echo $row['zone_position']; ?>" /></td>
    <td colspan="2"><a><?php echo $row['zone_name']; ?></a></td>
    </tr>



    <?php } ?>   



    function slidemenu(id){
       $('#'+id).slideToggle();
      }





    ///second proccess 

    $(".sub").click(function(){
        $(this).closest('tr').find("input,select").each(function() {




        $.ajax({
          type: "POST",
          url: "<?php echo SITE_URL .'controlls/zone_add.php'; ?>",
          data: datastring,
          success: function (data) {

            alert("Details saved successfully!!!");
          }
            })

            });

    });

I want two things:

One is hide my data row and show form row for editing. Second is how to get all input select radio etc by there name for ajax request

dpt1712
dpt1712 获取特定的行字段值
7 年多之前 回复
dsklzerpx64815631
dsklzerpx64815631 你有什么问题?
7 年多之前 回复

2个回答



您不希望为每个字段执行AJAX POST。</ p>

   $(“。sub”)。click(
function(){
var data = {};
$(this).closest(“tr”)。find(“input,select”)。each(\ n function(){
data [$(this).attr(“name”)] = $(this).val();
}
);
$ .post(“your URL”,data ,function(data){alert(“Successful!”);});
}
);
</ code> </ pre>

我没有看你的选择器 了。 我假设你让他们纠正了。 我只关注从每个字段捕获值的过程,将其添加到JavaScript对象,然后通过AJAX发布。</ p>
</ div>

展开原文

原文

You don't want to do an AJAX POST for each field.

$(".sub").click( 
    function() {
        var data = {};
        $(this).closest("tr").find( "input,select").each(
            function() {
                data[$(this).attr("name")] = $(this).val();
            }
        );
        $.post( "your URL", data, function( data ) { alert( "Successful!" ); } );
    }
);

I didn't look at the selectors you had. I'm assuming you have them correct. I just focused on the process for capturing the values from each field, adding it to a JavaScript object, and posting it via AJAX.

duancan65665
duancan65665 为什么连接只是为了以后切片?
7 年多之前 回复
duanbinian2243
duanbinian2243 您的答案几乎是正确的,但您为数据创建了一个数组,它返回所有页面输入值。 我为数据创建一个字符串,如:var data =''; 并且在没有数组的情况下将值附加到:var data + = $(this).attr(“name”)= $(this).val(); 在最后我通过javascript片段删除逗号并完成了我的工作。 谢谢你的答复。
7 年多之前 回复



您需要做的是为表中的每一行生成一个唯一的ID - 并为表行提供id:</ p >

 &lt; tr id =“&lt;?= $ id?&gt;”  class =“&lt;?= $ class?&gt;”&gt; 
</ code> </ pre>

然后你可以使用jQuery $(“#&lt;? = $ id?&gt;“)</ code>并操纵行的内容以使用输入控件和提交/取消按钮替换静态文本。</ p>

此外,当您要提交时 ,您可以通过使用jQuery查询输入值来检索输入值。
例如:</ p>

  $(“tr#&lt;?= $ id?&gt; input#zone_name”)  .value(); 
</ code> </ pre>

关键是为每一行提供一个唯一的ID,您可能已在数据库中拥有该ID ... </ p>
</ DIV>

展开原文

原文

What you need to do is generate a unique ID for each row in the table - and give the table row that id:

<tr id="<?= $id ?>" class="<?= $class ?>">

Then you can find this row using jQuery $("#<?= $id ?>") and manipulate the contents of the row to replace static text with input controls and submit/cancel buttons.

Also, when you want to submit, you can retrieve the input values by querying them with jQuery. For example:

$("tr#<?= $id ?> input#zone_name").value();

The key is to give each row a unique id, which you might already have in the database...

douju8782
douju8782 不,您为每一行定义onclick事件以包含行ID。 这样它就成为事件处理程序的输入。 每行的<a onclick="showEditControls('<?= $ id ?>')“>编辑行</a>控件。 然后,showEditControls可以是全局的并且与行无关。 然后类似地为行需要的每个控件和表中的每个其他行执行此操作。
7 年多之前 回复
dongxia1390
dongxia1390 我可以把php放在jquery中? php循环中的jquery代码?
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐