我在每个表行上都有唯一ID的textarea区域。 如何使用javascript检索该唯一ID?
PHP:
$query = $db->query("SELECT * FROM bs_events WHERE eventDate = '".$date."'");
while($row = $query->fetch_array(MYSQLI_ASSOC)){
echo '<textarea id=\"att_name_" . $row['id'] . "\" style=\"width:300px\"></textarea>";'
}
PHP输出:
<textarea id="att_name_1" style="width:300px">
<textarea id="att_name_2" style="width:300px">
<textarea id="att_name_3" style="width:300px">
jQuery的:
$(document).ready(function(){
$("#book_event").submit(function(){
id = event.target.id.replace('att_name_','');
$.post("Scripts/book_event.php", {
att_name: $("att_name_"+id).val(),
}, function(data){
if(data.success) {
$("#err").text(data.message).fadeIn("slow");
}
}, "json");
});
});
答案 0 :(得分:5)
在我看来,您正在命名您的textareas以与数据库条目相关联,然后尝试进行更新并将这些值传回。假设textareas采用您提交的形式,您可以使用:
$('#myform').submit(function(e){
// find each of those text areas
$(this).find('textarea[id^=att_name]').each(function(i,e){
//
// from here-in, e now represents one of those textareas
//
// now submit the update
$.post('Scripts/book_event.php',{
att_name: $(e).val()
},function(data){
if (!data.success)
$("#err").text(data.message).fadeIn("slow");
},'json');
});
e.preventDefault();
});
理想情况下,如果您希望使用AJAX将更新/更改推送回服务器,您可以查看.serialize()
并推回所有表单。然后,在服务器端,您将获得可用于实际更新的标准$_POST['att_name_1']
值。 e.g。
// .serialize() example
$('#myform').submit(function(e){
$.post('Scripts/book_event.php',$(this).serialize(),function(data){
if (!data.success)
$("#err").text(data.message).fadeIn("slow");
});
e.preventDefault();
});
答案 1 :(得分:3)
要解决您的问题,您可以使用each()
$(function()
{
$("textarea").each(function()
{
var textarea_id = $(this).attr('id');
});
});
答案 2 :(得分:2)
我不完全理解这个问题。
如果你想要一个id列表,那么如何:
$(document).ready( function ( ) {
var textareas = new Array();
// Run through each textbox and add the id to an array
$("textarea").each( function( ) {
textareas.push( $(this).attr("id") );
});
// Print out each id in the array
textareas.forEach( function(i) { alert(i); });
});
(这是未经测试的,可能不是最快捷的方式 - 我有点不在练习中)