如何使RadTextBox TextMode=密码接受代码后面的自动填充值
本文关键字:填充 代码 RadTextBox 何使 TextMode 密码 | 更新日期: 2023-09-27 18:28:35
Google Chrome和FireFox浏览器具有一项功能,允许用户将用户名和密码保存到本地机器。这使他们下次登录时无需太多努力,也无需记住信息是什么。信息基本上是自动填充的。当这些浏览器执行此操作时,它会在文本框中显示*。显示浏览器已成功将值放置在RadTextBox中。但是,当c#代码后台将值检索为空字符串时。
我的代码如下
<telerik:RadTextBox ID="txtPassword" runat="server" ToolTip="Enter password"
Text="" MaxLength="40" EnableSingleInputRendering="False"
Wrap="False" TextMode="Password" CausesValidation="false" Skin="WebBlue">
</telerik:RadTextBox>
代码背后:
objLogin.Password = txtPassword.Text;
更奇怪的是,如果你多次单击按钮,后面的代码就会看到实际值并继续登录。似乎RadTextBox控件需要第二次呈现,或者需要向后发布才能使控件正常工作。
我需要做什么才能让RadTextBox控件最初识别浏览器中输入的值,而不必多次单击后面的代码才能看到值?
谢谢你的帮助。
这是因为您的文本框仅在客户端获得值,而底层的RadTextBoxes值则没有。
我以前遇到过这样的问题,通过使用jQuery xxx.val("…")设置为RadTextBox的值在回发时无法传递到服务器端。
从客户端获取"分配"给RadTextBox控件的Text属性的值的唯一方法是使用:
$find('<%= txtUsername.ClientID%>').set_value('newvalue');
在您的情况下,很可能是浏览器设置(自动填充)值,并且仅在客户端可用。因此,要实际分配这些值,您可以在Login按钮回发之前进行拦截,如下所示:
var un = $('#<%= txtUsername.ClientID%>').val();
var pw = $('#<%= txtPassword.ClientID%>').val();
$find('<%= txtUsername.ClientID%>').set_value(un);
$find('<%= txtPassword.ClientID%>').set_value(pw);
如果您使用RadButton作为登录按钮,这可以在按钮的OnClientClicking/OnClientClicked事件上完成,如下所示:
<telerik:RadButton ID="cmdSignin" runat="server" Text="Sign In"
SingleClick="true" SingleClickText="Signing In..."
OnClientClicking="OnClientClicking"></telerik:RadButton>
希望能有所帮助。