【问题标题】:ASP.NET button server side logic not being executed after javascriptjavascript 后未执行 ASP.NET 按钮服务器端逻辑
【发布时间】:2012-03-21 11:35:07
【问题描述】:

我在使用 JavaScript 和 jQuery 进行客户端验证时遇到了很多麻烦。

我在一个页面 (.aspx) 上有 2 个用户控件 (.ascx),每个控件都有自己的按钮,定义如下

Page
    user control 1
        textbox 1
        textbox 2
        Button 1
    user control 2
        textbox 3
        textbox 4
        Button 2

按钮 1 和按钮 2 具有相同的 CSS 类。 我还有一个页面引用的 JavaScript 脚本。

使用 jQuery 我可以准确地选择按钮并将点击事件绑定到它们,如下所示:

$('.buttonCssClass').click(function() {
    // If the user control fields are not valid then do nothing

    if (typeof (Page_IsValid) == 'undefined' || Page_IsValid) {
        return false;
    }

    // If the user control fields are valid then 
    // disable the button and replace the CSS class and add an image (progress spindle)
    // until the processing is over - this is to prevent the user from clicking multiple              
    // times for long running and async processes.
});

当我单击按钮 1 时,我只想检查该用户控件中的字段的有效性 - 而不是页面中的所有字段。现在,页面上所有控件中的所有字段都经过有效性检查 - 这意味着我的 JavaScript 函数总是返回 false

有人可以帮我解决这个问题吗?

【问题讨论】:

  • @Tim - 感谢您的编辑。只有我在这个网站上的第二个问题。

标签: javascript jquery asp.net validation


【解决方案1】:

指定ValidationGroups,这样就不会验证整个页面。这也适用于客户端:

if(typeof(Page_ClientValidate) == 'function')
    return Page_ClientValidate("MyValidationGroup");

【讨论】:

  • 这只是 GR8!非常感谢!
  • 如果我对验证组进行硬编码,上述技术适用于 gr8 - 但我需要从 jquery 或 javascript 以编程方式获取它。我试过 $(this).attr("ValidationGroup").nodeValue 但 ValidationGroup 属性未在 html 中呈现。你对此有什么想法吗?谢谢。
  • 您可以从代码隐藏中插入正确的 ValidationGroup(例如在您的 UserControls 的 Page_Load 中):Page.ClientScript.RegisterClientScriptBlock(Page.GetType, "initValidationGroup", "var myValidationGroup='Control1ValGroup';", True)。然后你可以从你的验证函数中使用这个 js 变量。
【解决方案2】:

也许您可以检查引发事件的点击函数。

【讨论】:

  • mmm - 感谢您的输入 -> 请您提供一些示例代码来执行此操作吗?
  • $('.buttonCssClass').click(function(event) { var tagId = event.target.id; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多