jQuery:while循环中的表单

jQuery:while循环中的表单,jquery,Jquery,我在PHP中的while循环中有一个表单。有action=“javascript:block_grade($id)”,但当我在block_grade函数中发出警报(id)或警报(lvl)时,我从所有循环中收到相同的数字 这在我的循环中: echo '<form action="javascript:block_grade('.$show['id'].')" method="post">'; echo 'Change blockgrade: '; echo '<input typ

我在PHP中的while循环中有一个表单。有action=“javascript:block_grade($id)”,但当我在block_grade函数中发出警报(id)或警报(lvl)时,我从所有循环中收到相同的数字

这在我的循环中:

echo '<form action="javascript:block_grade('.$show['id'].')" method="post">';
echo 'Change blockgrade: ';
echo '<input type="text" name="lvl" size="1" value="'.$show['lvl'].'">';
echo '<input type="submit" value="Save">';
echo '</form>';
echo';
回音“更改块等级:”;
回声';
回声';
回声';
下面是我的函数:

<script>
function block_grade ( id ) {
var lvl = $('input[name=lvl]').val();
alert(lvl);
alert(id);
}
</script>

功能块等级(id){
var lvl=$('input[name=lvl]')。val();
警报(lvl);
警报(id);
}

我该如何解决这个问题,也许还有比这更有效的方法吗?

我更希望看到JavaScript直接附加事件处理程序,然后您可以轻松地执行与表单相关的操作

echo '<input type="text" name="lvl" size="1" value="'.$show['lvl'].'">';
echo '<input type="hidden" name="id" size="1" value="'.$show['id'].'">';
除其他优点外,这释放了
action
属性,因此您可以填写一个脚本,在必要时不使用JavaScript直接处理该请求


但更重要的是(你的原始问题),它确保你看到的是正确的
lvl
字段,不仅仅是第一个
lvl
字段jQuery碰巧出现在DOM中。

我更希望看到JavaScript直接附加事件处理程序,然后您可以轻松地执行与表单相关的操作

echo '<input type="text" name="lvl" size="1" value="'.$show['lvl'].'">';
echo '<input type="hidden" name="id" size="1" value="'.$show['id'].'">';
除其他优点外,这释放了
action
属性,因此您可以填写一个脚本,在必要时不使用JavaScript直接处理该请求


但更重要的是(您最初的问题),它确保您看到的是正确的
lvl
字段,而不仅仅是jQuery在DOM中遇到的第一个
lvl
字段。

我甚至不知道可以将表单的操作设置为“javascript:…”。我总是使用
onsubmit
事件

无论如何,对于
lvl
来说,也难怪总是得到相同的值,因为
val()
给出了集合中第一个元素的值。该集合包含整个页面中的所有
输入


但是,对于
id
您应该获得正确的值。也许您应该显示生成的最终HTML。

我甚至不知道可以将表单的操作设置为“javascript:…”。我总是使用
onsubmit
事件

无论如何,对于
lvl
来说,也难怪总是得到相同的值,因为
val()
给出了集合中第一个元素的值。该集合包含整个页面中的所有
输入


但是,对于
id
您应该获得正确的值。也许您应该显示生成的最终HTML。

可能重复@pst,我认为这与闭包无关。更像是他希望jQuery神奇地知道他需要哪个元素。他将
id
作为参数传递给
block\u grade()
。没有魔法。可能是@pst的重复。我认为它与闭包无关。更像是他希望jQuery神奇地知道他需要哪个元素。他将
id
作为参数传递给
block\u grade()
。没有魔法。我应该让我的JS在循环中吗?否则我还是会得到同样的结果?或者有没有办法……不,JavaScript是自给自足的。您不需要在页面上的任何地方使用任何其他JavaScript来实现该功能。如果您使用此设置获得相同的结果,则表明您的PHP有问题-它为每个表单的
lvl
id
输出了相同的值。刚才在html输出(查看源代码)中看到,它在value=“”中显示了id和lvl的正确值然后要么你的标记在某个地方有问题,要么你有一个完全独立的JavaScript代码块。我的最佳猜测是:在整个表单集合中都有一个
标记。HTML验证器应该捕捉到这一点。我应该让我的JS在循环中吗?否则我还是会得到同样的结果?或者有没有办法……不,JavaScript是自给自足的。您不需要在页面上的任何地方使用任何其他JavaScript来实现该功能。如果您使用此设置获得相同的结果,则表明您的PHP有问题-它为每个表单的
lvl
id
输出了相同的值。刚才在html输出(查看源代码)中看到,它在value=“”中显示了id和lvl的正确值然后要么你的标记在某个地方有问题,要么你有一个完全独立的JavaScript代码块。我的最佳猜测是:在整个表单集合中都有一个
标记。HTML验证器应该能捕捉到这一点。最终的HTML(源代码)给出了正确的结果。。我相信这是因为JS在循环之外?不,没关系。如果你像
block\u grade(1)
block\u grade(2)
block\u grade(3)
那样调用它,它应该为
id
发出“1”、“2”和“3”警报。好的,我仍然无法从其他元素中获得任何其他值。最终的html(源代码)给出了正确的结果。。我相信这是因为JS在循环之外?不,没关系。如果你像
block\u grade(1)
block\u grade(2)
block\u grade(3)
那样调用它,它应该为
id
发出“1”、“2”和“3”警报。好的,我仍然无法从其他元素中获取任何其他值