在C#或JQuery中处理OnClick

时间:2013-01-29 15:43:35

标签: c# jquery asp.net standards

我正在使用c#/ aspx / jquery开发webforms项目。我不确定在哪里处理Onclick。这两个选项(在C#或jquery中执行)似乎都是可行的。哪种做法更好?

以下是该方案:

我想构建一个checkbox来切换textbox's textmode,在密码和SingleLine之间进行更改。

目前,我有以下代码用于我的标记,因为我目前正在C#中处理它:

<asp:Checkbox ID="CheckBox1" OnCheckedChanged="CheckBox1_OnCheckedChanged"/>

代码:

protected virtual void OnCheckedChange(EventArgs e)
{
     If (CheckBox1.TextMode == TextMode.Password)
          CheckBox1.TextMode = TextMode.SingleLine;
     else
          CheckBox1.TextMode = TextMode.Password;
}

用例是:用户输入密码。在同一页面上,他可以通过选中复选框来选择隐藏或不隐藏密码。

2 个答案:

答案 0 :(得分:2)

  

哪种方法更好?

您的功能要求是什么?

  • 在asp.net代码背后的C#中设置它,你需要一个回发来使它工作。这意味着页面将刷新,文本框将更改。
  • 在客户端(JS / JQuery)上,页面不会刷新。

现在,您需要评估所需的工作与所需的质量。 (如果你想要一个很好的用户体验并且可以编写JS把它放在JS中,如果你时间紧张并且可以刷新,那么在asp.net上做吧)。

我试图回答一般意义上的问题:如何做出这样的决定(以我的拙见)。 现实这很容易实现在javascript中你应该在那里做。


现在代码(我假设您知道如何将它放在asp.net代码中,所以我将编写JS方法):

HTML:

My Password: <input type="password" id="mytext" /> <br />
Hide Chars : <input id="passChk" type="checkbox" checked="true" />

使用Javascript:

$(function() {
    $("#passChk").change(function(){
        if(this.checked) {
            $("#mytext").attr("type","password");
        } else {
            $("#mytext").attr("type","text");
        }
    });
});

看到它在这里运行:http://jsfiddle.net/rC5NW/2/

答案 1 :(得分:0)

在尝试实施已接受的答案后,我意识到某些浏览器(我使用的是Google Chrome)不允许更改type属性。有一种方法可以绕过这一点,但我不认为这对我的目的是值得的:

因此,最好只使用C#。

相关问题