gpt4 book ai didi

php - 为动态 JS 表创建行 ID

转载 作者:行者123 更新时间:2023-11-30 10:56:13 26 4
gpt4 key购买 nike

我有工作脚本,用户在表单上完成输入,当他们提交表单时,表单输入的内容作为表格行输入。

有没有办法,我认为在 JS 中使每一行都有一个唯一的 ID,并在每一行的最后一列添加一个删除按钮,以便用户可以删除单个行。

感谢您挽救了一条生命!!!!

HTML 表单

    <form id="my_form" action="table_form.php" method="post">
<div style="width:10%; float:left;">
Quantity<br />
<input name="field_1" type="text" id="field_1" size="3" />
</div>
<div style="width:20%; float:left;">
Part Number<br />
<input type="text" id="field_2" name="field_2" />
</div>
<div style="width:30%; float:left;">
Notes<br />
<input name="field_3" type="text" id="field_3" size="45" />
</div>
<div style="width:20%; float:left;">
Unit Price<br />
<input type="text" id="field_4" name="field_4" />
</div>
<div style="width:20%; float:left;">
<br />
<input type="submit" value="Add Row" />
</div>
</form>

<!--
Here we create our HTML table.
Note the ID of the table. This will be used in our javascript file
Our table only contains a header row. All other content will be added dynamically
--><? $rowid = 1; ?>
<table width="100%" id="my_table">
<tbody id="my_table_body">
<tr>
<th width="5%"><div align="left">Qty</div></th>
<th width="19%"><div align="left">Part Number</div></th>
<th width="46%"><div align="left">Notes</div></th>
<th width="15%"><div align="left">Unit Price</div></th>
<th width="15%"><div align="left">Row Total</div></th>
</tr>
</tbody>
</table>


JS

window.addEvent('domready', function(){
$('my_form').addEvent('submit', function(e){
e.stop();
this.set('send', {
onComplete: function( response ){
var data = JSON.decode(response);
inject_row( $('my_table_body'), data );
}
});
var valid_form = true;
$$('#my_form input').each(function(item){
if( item.value == '' ) valid_form = false;
});
if( valid_form ) {
this.send();
} else {
alert('Fill in all fields');
}

});
var inject_row = function( table_body, data ){
var row_str = '<tr width="100%">';
data.each( function(item, index){
row_str += '<td>'+item+'</td>';
});
row_str += '<td><input type="submit" name="deleterow" id="deleterow" value="Delete" /></td></tr>';
var newRow = htmlToElements( row_str );
newRow.inject( table_body );

}
var htmlToElements = function(str){
return new Element('div', {html: '<table><tbody>' + str + '</tbody></table>'}).getElement('tr');
}

});

PHP

<?php 

/**
* If nothing is being posted to this script redirect to
* our HTML page.
*/
if( ! $_POST ){
header('Location: newquote.php');
}

// create an empty array for our results
$results = array();

/**
* Stick the values from _POST into our results array
* while also stripping out any html tags
*
* This is where you would perform any required processing
* of the form data such as server side validation or updating
* a database.
*/
foreach( $_POST as $field ){
$results[] = strip_tags( $field );
}

// Echo our results as a JSON encoded string.
echo json_encode( $results );

?>

最佳答案

我同意 J-P 的观点,听起来您在这里不需要唯一 ID。
由于问题被标记为“jquery”,我建议使用 live event binding ,例如

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {
$(".deleterow").live("click", function() {
$(this).parents("tr:first").remove();
});
});

function foo(id) {
$("#"+id).append('<tr><td>'+(new Date()).getSeconds()+'</td><td>x</td><button class="deleterow">delete</button></td></tr>');
}
</script>
</head>
<body>
<table id="t1">
<tr><td>a</td><td>A</td><td><button class="deleterow">delete</button></td></tr>
<tr><td>b</td><td>B</td><td><button class="deleterow">delete</button></td></tr>
<tr><td>c</td><td>C</td><td><button class="deleterow">delete</button></td></tr>
</table>
<button onclick="foo('t1')">add</button>
</body>
</html>

传递给 $(document).ready() 的函数在……好吧,正如名称所述,当文档 (dom) 准备就绪时被调用。
$(".deleterow").live("click", ... :每当单击事件发生在具有 css 类“deleterow”的元素上时,将调用作为第二个参数传递的函数。在这种情况下

function() {
$(this).parents("tr:first").remove();
}

调用函数时,this-context 是事件发生的元素。 parents("tr:first") 返回当前元素的祖先轴中的第一个/“最近的”tr 元素。 remove() 可能是不言自明的……

编辑: 好的,现在 jquery 标签不见了....
http://www.jaycarlson.net/blog/2009/04/06/live-events-in-mootools/显示 mootools 的实时事件绑定(bind)。使用"new"解决方案与 jquery 脚本非常相似

window.addEvent('domready', function() {
// add an onclick handler for all current and future button elements
// within the table id=t1
$('t1').addLiveEvent('click', 'button', function(e){
// a button in t1 has been clicked, this=button element
// get the "nearest" tr in the parent/ancestor-axis
// and remove it
$(this).getParent("tr").dispose();
});
});

关于php - 为动态 JS 表创建行 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com