在FF中第二次提交jQuery / Ajax表单时出错

时间:2012-09-06 08:17:50

标签: jquery html

这是我的HTML输出代码:

<tr class="uedit103" style="display: none;"><form  id="editform103" name="editform103">
    <td class="base" id="uedit103"><input type="text" class="editua" name="lname" id="lname" value="inte"></td>
    <td class="base" id="uedit103"><input type="text" value="info" class="editua" name="fname" id="fname" ></td>
    <td class="base" id="uedit103"><input type="text" value="email@email.com" class="edituaxl" name="emailadres" id="emailadres" ></td>
    <td class="yellow       
    "><select name="ma_accesslevel"><option value="0" >Basic</option><option value="1"  SELECTED >Intermediate</option><option value="2" >Superuser</option></select></td>
    <td class="yellow

    "><select name="m_accesslevel"><option value="0" >Basic</option><option value="1"  SELECTED >Intermediate</option><option value="2" >Superuser</option></select></td>
    <td class="yellow
    "><select name="hcc_accesslevel"><option value="0" >Basic</option><option value="1"  SELECTED >Intermediate</option><option value="2" >Superuser</option></select></td>
    <td class="base" id="uedit103"><input type="hidden" class="editua" name="uid" id="uid" value="103"></td>
    <td class="base" id="uedit103"><input type="button" id="editsubmit103" class="editbutton" Value="Save"><input type="button" id="editcancel103" class="editbutton" Value="Cancel"></td>
    </form></tr> 

jQuery部分就是这个(为调试添加警报):

$('#editsubmit$ses->user_id').click(function(){
    $.post('ajax/aj_edituser.php', $("form#editform$ses->user_id").serialize(), function(result) {
        alert($("form#editform$ses->user_id").serialize());
        $('#success$ses->user_id').delay(200).fadeToggle('slow').delay(2000).fadeToggle('slow');    
        $('div.mainadmin').html(result);            
    });
}); 

适用于除FF之外的所有浏览器,第二次提交表单时失败(表单在打开的页面中重新加载)。验证HTML或查看FF中的源代码时,表单标记

<form  id="editform103" name="editform103">

显示为红色,并显示消息“在表格中显示开始标记表单”。结束表格标签也是红色的,并收到消息“Stray end tag form”。 通过http://validator.w3.org/验证代码也会给我这些错误+“在此上下文中不允许元素形式作为元素tr的子元素。(在此子树中抑制更多错误。)”在editform上。所以我也尝试将表单放在标签周围,但没有帮助。

我不再看到这个,有谁可以提供帮助?

2 个答案:

答案 0 :(得分:3)

将表单标记放在TR标记或TABLE标记内部无效HTML,需要将其放在TD内部或整个TABLE中

答案 1 :(得分:1)

改变这个:

$('#editsubmit$ses->user_id').on('click', function(){ ... }

如果您要使用Javascript创建HTML元素,则应使用.on()来绑定事件。

http://api.jquery.com/on/

希望有所帮助。