使用jQuery ajax时,Chrome会删除表单元素

时间:2013-02-25 15:23:52

标签: html asp.net-mvc google-chrome jquery

我在动作的JSON响应中返回一些简单的HTML标记。

以下是完整的回复(为了便于阅读而添加了换行符):

    {
        "Success":true,
        "Content":"\r\n
<div class=\"editor-form\">\r\n

<form action=\"/Blah/Blah/5104?id=9\" method=\"post\">

<input data-val=\"true\" data-val-number=\"The field Id must be a number.\" data-val-required=\"The Id field is required.\" id=\"Id\" name=\"Id\" type=\"hidden\" value=\"5104\" />

<input data-val=\"true\" data-val-number=\"The field Vat Rate must be a number.\" data-val-required=\"The Vat Rate field is required.\" id=\"VatRate\" name=\"VatRate\" type=\"hidden\" value=\"1.2000\" />

<div class=\"display-field\">\r\n\t

<label for=\"Price\">Price (Ex-VAT)</label>\r\n\t

<input class=\"text-box single-line\" data-val=\"true\" data-val-number=\"The field Price must be a number.\" data-val-required=\"The Price field is required.\" id=\"Price\" name=\"Price\" type=\"text\" value=\"92.50\" />\r\n\t

</div>\r\n

</form>
</div>",
"Data":null,
"Errors":null
}

这是我在成功回应后用它做的事情:

$("#EditPriceDialog").html(data.Content).dialog(MyProject.UI.DialogOptions({ minWidth:380, minHeight:200, modal:true }))

当标记呈现时,表单元素丢失。表单内的元素仍然存在。这只发生在Chrome中。在IE9和FF 19中,表单元素就在那里。 Chrome有什么不同?

1 个答案:

答案 0 :(得分:19)

如果表单元素已被其他表单元素包围,则会删除表单元素。此外,ASP .Net为其服务的所有页面呈现表单标记,因此Chrome正在剥离data.Content中的表单标记。我不认为IE或firefox就是这样的。

编辑:希望您会发现这个有用,How do you overcome the html form nesting limitation?