jQuery:在循环中形成内部

时间:2010-11-12 22:34:37

标签: 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 type="text" name="lvl" size="1" value="'.$show['lvl'].'">';
echo '<input type="submit" value="Save">';
echo '</form>';

这是我在底部的功能:

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

我怎样才能解决这个问题,有没有比这更有效的方法呢?

2 个答案:

答案 0 :(得分:3)

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

echo '<input type="text" name="lvl" size="1" value="'.$show['lvl'].'">';
echo '<input type="hidden" name="id" size="1" value="'.$show['id'].'">';

然后:

$('form').submit(function() {
    var id = $(this).find('input[name=id]').val();
    var lvl = $(this).find('input[name=lvl]').val(); 
});

除了其他优点之外,这还释放了action属性,因此您可以填写一个脚本,可以在没有JavaScript的情况下直接处理此请求。

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

答案 1 :(得分:0)

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

无论如何,对于lvl来说,难怪你总是一样,因为val()给出了集合中第一个元素的值。该集合在整个页面中包含所有 input

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