在页面上具有多个表单时查找特定的输入值

时间:2012-02-27 16:57:48

标签: php jquery ajax

我一直试图找到一种方法让我的jQuery AJAX脚本找出我发布的表单的值,但我不确定我做错了什么。我可能错过了一些基本知识。

总之。到目前为止这是我的jQuery:

function updaterow(sub){

            var form = sub.form;

            var ID = $(form).find('input[name="ID"]').val();

            var ArtName = $(form).find('input[name="ArtName"]').val();

            var ArtNumber = $(form).find('input[name="ArtNumber"]').val();

            var CustContact = $(form).find('input[name="CustContact"]').val();

            var SupStatus = $(form).find('select[name="SupStatus"]').val();

            var SupName = $(form).find('select[name="SupName"]').val();

            var OrderOther = $(form).find('textarea[name="OrderOther"]').val();



            var dataString = 'ID=' + ID + '&ArtName=' + ArtName + '&ArtNumber=' + ArtNumber + '&CustContact=' + CustContact + '&SupStatus=' + SupStatus + '&SupName=' + SupName + '&OrderOther=' + OrderOther;

            alert(sub.form);
            alert(dataString);

            return false;
        }

编辑:这会在Firefox中返回未定义的每个变量。它在IE 9中似乎是正确的。

这是我的HTML(PHP),它也更新为包含更多输入字段:

while ($row = mysql_fetch_array($query)) {
        echo "<tr><form id='".$row['ID']."' class='fcform'>
                    <td class='idcell'><input type='text' class='fcid' name='ID' readonly='readonly' value='".$row['ID']."' /></td>
                    <td><input type='text' name='ArtName' value=' ".$row['ArtName']."' /></td>
                    <td><input type='text' name='ArtNumber' value='".$row['ArtNumber']."' /></td>
                    <td><a href='/singlepost.php?ID=".$row['ID']."' title='Skriv ut ".$row['CustName']."'>".$row['CustName']."</a></td>
                    <td><input type='text' name='CustContact' value='".$row['CustContact']."' /></td>
                    <td>
                        <select name='SupStatus' class='fcsupstatus'>
                            <option value='".$row['SupStatus']."'>".$row['SupRealStatus']."</option>
                            <option value='01'>Mottagen</option>
                            <option value='02'>Lagd i korg</option>
                            <option value='03'>Beställd</option>
                            <option value='04'>Ankommen</option>
                            <option value='05'>Slutförd</option>
                            <option value='06'>Nekad</option>
                        </select>
                    <td>
                        <select>
                            <option value='".$row['SupName']."'>".$row['SupRealName']."</option>
                            <option value='01'>2020</option>
                            <option value='02'>Order</option>
                            <option value='03'>Brightpoint</option>
                            <option>---------</option>
                            <option value='04'>12 Volt</option>
                            <option value='05'>Armour</option>
                            <option value='06'>Brodit</option>
                            <option value='07'>Captech</option>
                            <option value='08'>DLS</option>
                            <option value='09'>Garmin</option>
                            <option value='10'>GL Batterier</option>
                            <option value='11'>Ingram</option>
                            <option value='12'>Isicom</option>
                            <option value='13'>KGK</option>
                            <option value='14'>MTU</option>
                            <option value='15'>Peltor</option>
                            <option value='16'>Pioneer</option>
                            <option value='17'>TMT</option>
                            <option value='18'>Övriga</option>
                        </select>
                    </td>
                    <td>".$row['Date']."</td>
                    <td>
                        <textarea name='OrderOther' cols='40' rows='3' class='fcorderother'>".$row['OrderOther']."</textarea>
                        <input class='savebutton' type='button' value=' ' name='Submit".$row['ID']."' onClick='updaterow(this);' />
                    </td>
                    </form></tr>";}

我发布了这篇文章作为另一篇文章,但后来我问为什么我的ajax没有发布。现在已经修复了,但现在出现了变量的问题。只是不明白为什么......

我无法使用ID,因为表单是动态生成的。但似乎jQuery不知道我想发布哪种形式。

我尝试过使用遍历类和名称,但无济于事。

编辑: 链接到文件:

http://bilradiocentrum.se/txt/listheader.txt

http://bilradiocentrum.se/txt/orderlist.txt

http://bilradiocentrum.se/txt/updaterowajax.txt

2 个答案:

答案 0 :(得分:1)

您需要将参数添加到updateRow 功能(第1行)。并且从参数获取表单对象(第2行)。

看看如何完成。

function updaterow(sub){ // (line #1)
    var form= sub.form;  // (line #2)
    var ID = $(form.ID]).val();
    var SupStatus = $(form.SupStatus).val();
 ...

此处form将成为您的表单,因为您在onClick='updaterow(this);'元素input中使用sub将是输入元素。 sub.form将是包含input元素的表单。因此形式得到了实际形式。

更新

jquery find语句中存在问题。使用$(form.NAME).val(),其中NAME是元素名称,例如 ArtName ID OrderOther 等。(我已经更新了上面的代码)。

另一个选项是为每个元素使用唯一键作为Id。见下面的例子,

<input id='ArtName-".$row['ID']"' type='text' name='ArtName' value=' ".$row['ArtName']."' />

现在可以通过updaterow()$("#ArtName-"+$(form).prop('id'))轻松地在$("ArtName-"+ID)函数中获取此行。

只有将更新功能更改为updaterow(sub, ID)并将提交输入元素更改为

时,才能使用后者
<input class='savebutton' type='button' value=' ' name='Submit".$row['ID']."' onClick='updaterow(this, \"".$row['ID']."\");' />

答案 1 :(得分:1)

一个简单的更改将解决您的问题:

变化:

               <input type='button' value='Spara' name='Submit".$row['ID']."' onClick='updaterow(this);' />

要:

               <input type='button' value='Spara' name='Submit".$row['ID']."' onClick=updaterow('".$row['ID']."'); />

在你的剧本中:

function updaterow(formid){

            var form = document.getElementById(formid); //Why you need this line??

            var ID = $("#"+formid).find('input[name="ID"]').val();

            var SupStatus = $("#"+formid).find('input[name="SupStatus"]').val();
            var OrderOther = $("#"+formid).find('input[name="OrderOther"]').val();

编辑:我在name属性的值中添加了引号。 (更新您的js代码并立即尝试)