我正在使用asp.net mvc 2.0和jquery验证1.7(http://bassistance.de/jquery-plugins/jquery-plugin-validation/)
这是怎么回事。用户可以单击链接来编辑产品。当用户点击他们想要编辑的产品时,会出现一个带有文本框和下拉列表形式的jquery对话框。
这些html控件中包含填写的信息。假如用户选择编辑Ipad产品,则会出现一个对话框,其中一个表单文本框中将包含“Ipad”。
现在,此表单在服务器端呈现(表单处于部分视图中)。加载对话框时,会发出ajax请求以获取该部分视图,并在ajax调用的响应部分中执行类似
的操作$('#EditDialog).html(ajaxresponse).dialog({...});
所以我会在对话框中呈现这样的东西
<form id="EditProduct">
Product Name: <input type="text" value="IPad" name="ProductName" />
</form>
现在我的jquery验证将是这样的。
$("#EditProduct").validate(
{
errorContainer: "#Errorbox",
errorLabelContainer: "#Errorbox ul",
wrapper: "li",
rules:
{
ProductName: "required"
}
});
所以我知道这是有效的,因为我对添加产品使用相同的验证,如果您尝试将ProductName留空,则会显示验证错误。
现在它不适用于编辑,但我想我知道原因,但不知道如何修复它。
文本框的值是“IPad”,这是Html.TextBoxFor()
呈现它的方式。但是,如果用户将产品名称更改为“Iphone”或空白,则该值永远不会更改。它总是在html中的“Ipad”。
所以我认为当验证发生时,看起来它已经存在了哦。即使实际上它可能是空白的,它也是有效的。
当我通过ajax发布到服务器时,它获得正确的值,服务器端验证会停止它,但由于此问题,我的整个客户端验证都变得无用,因为它永远不会更改html。
答案 0 :(得分:1)
这似乎不太正确!
想象一下,在“添加”的情况下,您呈现的HTML看起来像这样:
<form id="AddProduct">
Product Name: <input type="text" value="" name="ProductName" />
</form>
所以“HTML”有一个空白值,但是一旦ProductName被填充,验证插件就可以正确判断了吗?
我不确定问题是什么,但是如果你有一个调试器(即Firebug),请尝试在“检查”功能(1.6中的〜第475行)中的验证插件中中断。您应该能够查看element.value
,看看它是否找到了正确的用户编辑值。