0

我有以下脚本:

<script type="text/javascript" >

$('form').each(function() {
    $(this).on('submit', function() {

var first_firstname = $(".first_firstname", this).val();
var first_lastname = $(".first_lastname", this).val();
var second_firstname = $(".second_firstname", this).val();
var second_lastname = $(".second_lastname", this).val();
var TeamName = $(".TeamName", this).val();
var dataString = 'first_firstname='+ first_firstname + '&first_lastname=' + first_lastname +
'&second_firstname=' + second_firstname + '&second_lastname=' + second_lastname + '&TeamName=' + TeamName;

 $.ajax({
type: "POST",
url: "data.php",
data: dataString,
success: function(){
window.setTimeout(function(data)
{
$('#propspectDiv').html('Team Name Added!');
$('#data').css("display","block");
$('#data').html(data);
}, 2000);
}

});

return false;
});

</script>

以及以下使用mysql数据库在页面上生成多个表单的php

<?php    

echo '<table class="greensmalltbl" cellspacing="10px" cellpadding="5px"><div id="propspectDiv"></div>';

    for ($i=1,  $o=$totalEntrants; $i<=$half; $i++, $o=$o-1) {

    $formid = $i;


echo "<div style='border:3px;'><form action='' method='post'>
<tr><td><input type='text' name='first_firstname' id='first_firstname' value='$firstName[$i]' />
<input type='text' name='first_lastname' id='first_lastname' value='$lastName[$i]' />
  Skill Level : ".$skill[$i]."</td></tr>";
echo "<tr><td>WITH</td></tr>";
echo "<tr><td><input type='text' name='second_firstname' id='second_firstname' value='$firstName[$o]' />
<input type='text' name='second_lastname' id='second_lastname' value='$lastName[$o]' /> Skill Level ".$skill[$o]."</td></tr>";
echo "<tr><td>Enter Team Name : <input type='text' name='TeamName' id='TeamName' value='' />
<input type='submit' name='submit' value='Submit'></form></td></tr>";

    }

echo '</table>';

?>

我想用每种形式的 TEAM NAME 更新 db 表

问题是只有第一个表单输入被传递所有其他表单什么都不做我已经尝试了 ajax 代码的许多变体,但没有一个有效。任何人都可以在这里找到问题

4

1 回答 1

0

此行不会返回表单。

var parent = $(this).parent('form');

因为您的提交按钮包含在标签中trtd要么摆脱这些标签(无论如何它们都是无效的,因为您没有在 a 中使用它们table),或者将您的代码更新为:

var parent = $(this).closest('form');

closest()向上搜索元素的所有祖先,并返回选择器的第一个匹配项。在此处查看文档:http: //api.jquery.com/closest/

或者,如果您的页面中只有一个表单,您可以这样做:

var parent = $('form');

:: 编辑 ::

好的。忘记以上所有。似乎您甚至没有在代码后面使用父变量。一个更重要的问题是,即使您在表单提交按钮上捕获 Click 事件,您可能真正想要做的是捕获表单的提交事件。

因此,将您的第一行代码更改为:

$('form').on('submit', function() {

此外,在您的 HTML 中,您的代码无效。

<form action'' method='post' id='$formid'>

action''应该 action = ''

很有可能这并不能真正解决您的问题,因为可能会有更多错误。下次,在发布问题之前尝试验证您的代码。

:: 编辑 ::

最后一次编辑,我保证。我很快再次浏览了您的代码,看来您将有多种形式。这意味着,您将获得具有相同 ID 的不同形式的元素。整个页面的 id 应该是唯一的。因此,当您尝试获得这样的值时,这$("#second_firstname").val();是行不通的。因为jQuery不知道你的意思是什么元素,所以所有可以在页面中多次出现的元素都需要有一个类并且不能有一个id。

然后,您可以通过将内容更改为:

$('form').each(function() {
    $(this).on('submit', function() {

        var first_firstname = $(".first_firstname", this).val(); // . instead of # and use 'this' as context

        // and so on..
        // the rest of your code here.
    }
});

表格可以在这里看到

于 2013-05-02T15:33:48.393 回答