如何使用jQuery获取textarea ID

时间:2011-02-09 15:48:00

标签: php jquery textarea

我在每个表行上都有唯一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");

   });   
});

3 个答案:

答案 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); });

 });

(这是未经测试的,可能不是最快捷的方式 - 我有点不在练习中)