2014-02-17 78 views
0

我试图在这个jQuery函数中捕获正确的变量,但无论我点击哪个按钮,警报总是显示我拥有的第一个标签的名称。有任何想法吗?谢谢。jQuery php变量问题

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $(".submit").click(function() { 
    var name = $("#name").val(); 
    alert(name); 
    }); 
    }); 
</script> 
</head> 

<body> 
<?php 
include("connection.php"); 
$link=connect(); 
$result=mysql_query("select * from names",$link); 

if (mysql_fetch_array($result) == 0) 
{ 
    echo "No names registered. Add one"; 
} 
else 
{ 
    while($row=mysql_fetch_array($result)) 
    { 
     echo "<html> 
     <label>".$row["name"]."</label> 
     <input type='button' class='submit' value='Delete'> 
     <input type='hidden' id='name' value=".$row["name"]."> 
     <br> 
     </html>";  
    } 

    mysql_free_result($result); 
    mysql_close($link); 
} 
?> 
</body> 
</html> 
+1

的ID必须是唯一的 – 2014-02-17 21:53:18

+0

@cmorrisey是的,我想删除使用AJAX,但目前的项目我只需要在每种情况下捕捉正确的变量。 – pesk1

回答

2

使用DOM导航从相邻的输入获得的价值:

$(document).ready(function() { 
    $(".submit").click(function() { 
     var name = $(this).next().val(); 
     alert(name); 
    }); 
}); 

而且,应该只是在页面上一个<html>块。不要把它放在循环中。

+0

这个工程!谢谢@Barmar – pesk1

0

首先,html ID应该是唯一的。

尝试使用HTML5数据属性,并删除你隐藏的表单元素:

while($row=mysql_fetch_array($result)) 
{ 
    echo "<input type='button' class='submit' value='Delete' data-value=".$row["name"].">";  
} 

和JS部分:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".submit").click(function() {   
      alert($(this).data('value')); 
     }); 
    }); 

0

您重新使用相同的ID - name - 多次:

while($row=mysql_fetch_array($result)) 
{ 
    echo "<html> 
    <label>".$row["name"]."</label> 
    <input type='button' class='submit' value='Delete'> 
    <input type='hidden' id='name' value=".$row["name"]."> 
    <br> 
    </html>";  
} 

你应该换个别形式的字段(未html元素),并使用name属性:

while($row=mysql_fetch_array($result)) 
{ 
    echo "<form action='' method='post'> 
    <label>".$row["name"]."</label> 
    <input type='button' class='submit' value='Delete'> 
    <input type='hidden' name='name' value=".$row["name"]."> 
    <br> 
    </form>";  
} 

这会使你的表格也没有JavaScript的工作。

然后,在你的JavaScript,你可以这样做:

$(".submit").click(function(e) { 
    e.preventDefault(); 
    var name = $(this).closest('form').find('input[name="name"]').val(); 
    ... 

或者,如果您需要发布使用它的ajax算账:

var data = $(this).closest('form').serialize(); 

(或你赶上submit事件的形式来代替)

0

除了一些其他的答案,你并不真的需要隐藏的输入。可能只是按钮输入更改为:

<input type='button' class='submit' name='".$row["name"]."' value='Delete'> 

您的jQuery选择然后更改为:

var name = $(this).attr('name');