我正在使用jquery 表单插件它使用 jquery ajax 来完成大部分工作。我们有jquery 1.7.2
我们使用它通过 ajax 向服务器发送表单,并返回指示成功的值或返回带有验证错误的表单。
我让它在 Firefox 和 Chrome 中工作,当在验证中发现错误时,包含旧表单的 div 内容将被替换为有错误的新表单。
$('#FormDiv').empty().html(response);
响应将类似于以下内容:
<form action="/MyForm/Edit" id="MyForm" method="post"><input id="Id" name="Id" type="hidden" value="" />
<input id="PlantId" name="PlantId" type="hidden" value="1" />
<table>
<tr><td class="field">
ID
</td>
<td>
<input class="required" id="MyId" name="MyName" type="text" value="JP001" />
</td>
<td class="field">Description</td>
<td><input class="required" id="Description" name="Description" type="text" value="" />
</tr>
<tr>
<td class="field">Created by</td>
<td>Joe Bloggs</td>
<td class="field">Create date</td>
<td>15/06/2012</td>
</tr>
</table>
</form>
在 IE 中调试,我可以看到 ajax 调用实际上在其返回主体中包含此内容,但是我的方法的参数正在删除外部表单的开始和结束标记,因此本质上它只是一个表。
我尝试了一些不同的方法来尝试解决这个问题,包括将 processData 设置为 false(不确定这是否真的会影响它)并将 returnType 设置为“text”和“html”,但没有一个真正有帮助。
有任何想法吗?
所以事实证明,如果我将表单包装在 div 中,一切似乎都正常,不太确定那里发生了什么,如果有人能解释这一点,他们就能得到答案
这不是 jQuery 错误。
这是一个不太为人所知的 Javascript“功能”
显然 FF3 和 IE6+(也许还有其他)中的 innerHTML 不喜欢将表单标签作为内部HTML。如果你愿意,你可以测试一下:
<div id="test">
<form>
<input>
</form>
</div>
<script>
window.onload=document.getElementById('test').innerHTML = "<form><input type="hidden" name="blah"></form>";
</script>
Result:
<div id="test">
<input type="hidden" name="blah">
</div>
不太清楚为什么,但就是这样they实施它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)