使用javascript检测html表中的输入按钮

时间:2012-10-20 11:37:54

标签: php javascript html

我在html表中插入输入按钮并使用javascript检测按下的按钮时遇到问题。一切正常,但是,如果我在javascript中提醒它,我可以看到它总是给我第一行的元素。另外,如果我按最后一行的元素。

现在我将用代码更好地解释。通过这种方式,我用按钮填充表格,一切正常:

//$shows is an array
$size = count($shows);


if ($size != 0) {   
echo "<table class='datatable'>";
echo "<thead>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>Name</th>";
echo "<th>Language</th>";
echo "<th>Add</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>"; 
}

for($i = 0 ; $i < $size; ++$i) {

echo "<tr>";
echo "<td>{$shows[$i]->id}</td>";
echo "<td>{$shows[$i]->name}</td>";
echo "<td>{$shows[$i]->language}</td>";
echo "<td>";
echo "<input type='hidden' id='add' value='yes' />";
echo "<input type='hidden' id='seriesid' value={$shows[$i]->id} />";
echo "<input type='hidden' id='lang' value={$shows[$i]->language} />";
echo "<input type='submit' id='name-submit' class='button plain' value='ADD'>";
echo "<div id='add-data'></div>";
echo "</td>";
echo "</tr>";
}


  if ($size != 0) {
  echo "</tbody>";
  echo "</table>";
  }

因此,通过这种方式,我可以看到表格中的所有信息,并且每行还会看到一个按钮。然后我想检测每行按下的按钮,我在javascript中有这个文件:

$('input#name-submit').click(function() {

    var add = $('input#add').val();
    var seriesid = $('input#seriesid').val();
    var lang = $('input#lang').val();
    alert(lang);
    if ($.trim(add) != '') {

        $.post('AccessDB.php', {add:add, seriesid:seriesid, lang:lang}, function(data) {
            alert(data);
        });
    }

});

此外,通过这种方式,我可以检测到按下的按钮,并使用lang元素向我显示警报,但是lang元素始终是第一行的元素。如果我按下最后一行中的按钮(使用不同的lang元素),我总是看到第一行的元素。例如,如果我使用seriesid或name元素,它始终是第一行的元素。那么,我怎样才能检测到其他行呢?

1 个答案:

答案 0 :(得分:1)

您一次又一次地使用相同的ID。使用类而不是类 使用

echo "<input type='hidden' class='add' value='yes' />";

而不是

echo "<input type='hidden' id='add' value='yes' />";

并使用此

    var add = $(this).parent().find(".add").val();
    var seriesid = $(this).parent().find('.seriesid').val();
    var lang = $(this).parent().find('.lang').val();

而不是

    var add = $('input#add').val();
    var seriesid = $('input#seriesid').val();
    var lang = $('input#lang').val();