1

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

这是场景:

我想构建一个checkbox将切换 a textbox's textmode,在 Password 和 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;
}

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

4

2 回答 2

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/

于 2013-01-29T15:51:37.153 回答
0

After trying to implement the accepted answer, I realized that some browsers (I used Google Chrome) does not allow changing the type attribute. There is a way to bypass this but I don't think it is worth it for my purposes:

Therefore, It might be better to just use C#.

Relevant Questions

于 2013-01-31T21:57:39.903 回答