【问题标题】:Jquery validation engine - How to use control IDs instead of namesJquery 验证引擎 - 如何使用控件 ID 而不是名称
【发布时间】:2015-01-27 22:56:51
【问题描述】:

我一直在使用此处的 JQuery 验证引擎:https://github.com/posabsolute/jQuery-Validation-Engine

我在 Asp.net webforms 网站(不是 MVC)中使用它。我在 Masterpage 中有表单标签并从那里调用验证函数。

$(function () {
                $("#form1").validationEngine('attach', { promptPosition: "topRight" });
            });

如果控件位于 MasterPage 上,则验证器可以正常工作,但如果它们是从内容页面引入的,则不会对其进行验证。

我环顾四周,发现这是因为 .net 重命名控件以避免冲突:https://stackoverflow.com/a/7353664/1218621

所以我将 ClientIDMode="Static" 放在我的 MasterPage 指令中,但这只会保留表单控件 ID,而不是名称。这个 jquery 验证引擎通过名称调用项目。

我知道我可以编写一个脚本来重命名我的控件,但我了解到,在那之后我将无法在回发时引用它们的属性,而且这似乎不是最佳做法.

由于我可以通过使用 ClientIDMode="Static" 来确保控件 ID 是什么,但我不能指望它们的名称值不会改变,有没有办法让 jquery 验证引擎在控件 ID 上工作而不是名字?

【问题讨论】:

    标签: jquery asp.net jquery-validation-engine


    【解决方案1】:

    您还需要将ClientIDMode="Static" 放在内容页面的控件上。那是一个相当不错的客户端库;您使用什么进行服务器端验证?您是否尝试过使用ajax[selector]funccall[selector] 验证方法?

    【讨论】:

    • 感谢您的建议。我编写了自己的服务器端验证来备份它,但还没有尝试过 ajax 或 funccall 方法。我也将 ClientIDMode="Static" 放在控件上,但它仍然无法正常工作。查看源代码显示,除了我已经设置的名称之外,名称仍在更改:
    • ClientIDMode="Static" 只设置 ID 属性;命名容器仍然会使用 name 属性。 AFAIK 没有办法解决这个问题。是不是一定要用name="txtFirstName"可以不通过ID选择吗?
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多