我正在开发 ASP.Net 4.0 应用程序。在一个 Web 表单上,有许多输入框。
其中一个输入框有以下内容
<asp:TextBox ID="InputStu1LastName" runat="server" OnTextChanged="InputStu1LastName_TextChanged" AutoPostBack="true" AutoCompleteType="None" TextMode="SingleLine" ></asp:TextBox>
我将其部署到驻留在我的计算机上的 Web 服务器,以便其他人可以在部署之前进行测试。
当我点击提交按钮时,Firefox 总是询问我
“您想记住这台机器上的密码 abcd 吗?”
abcd实际上是我在InputStu1LastName字段输入的输入值
我知道文本框的默认 TextMode 是 SingleLine。本来我连那个都没有。由于 Firefox 一直认为它是密码文本框,所以我添加了此属性,但仍然收到此消息。
我用firebug进行了故障排除,但找不到任何东西。检查器指示器只是另一个常规文本框,但不是密码输入字段 我什至将代码更改为这样
<asp:TextBox ID="InputStu1LastName" runat="server" ></asp:TextBox>
我仍然收到消息
这是 Firefox 认为它是密码字段的唯一文本字段
我还有其他字段,例如InputStu2LastName、InputStu3LastName等。有趣的是,它们都是从InputStu1LastName克隆的
此外,当我的老板使用 Chrome 在他的计算机上测试我的应用程序时,它会预先填充用户名。 Chrome 认为该字段是用户名字段
有什么技巧可以帮助解决问题吗?
感谢您的任何提示。
这是渲染后的html标记
<input name="ctl00$ContentPlaceHolder1$InputStu1LastName" maxlength="50" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$InputStu1LastName\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_InputStu1LastName" class="validate[required]" type="text">
就像我之前说过的,我做了很多事情,例如删除类名、事件和 maxlength,但没有任何作用
从该字段克隆的其他字段也没有问题。
最佳答案
我相信问题根本不在这个文本框中。 Firefox 在检测到表单中的用户名/密码时会显示如下内容:
Would you like to remember the password for "userName" on http://...
因此,很可能您的表单中有一个文本框,它呈现如下 html:
<input id="tbpwd" type="password" >
它必须位于上述“InputStu1LastName”之后,从而欺骗 Firefox 认为它包含用户名。在代码隐藏中它将有
TextMode="Password"
为了防止 Firefox 在这种情况下尝试发挥作用,请添加一个属性:
AutoCompleteType="Disabled"
到代码隐藏中有问题的文本框。
关于asp.net - 为什么 Firefox 询问您是否要记住非密码文本框的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994115/