我需要在 asp.net 中创建一个用户名文本框。格式如下:
DOMAIN-NAME/username
现在DOMAIN-NAME
,默认情况下应该是硬编码且不可编辑的文本。用户只能输入用户名,但不能删除DOMAIN-NAME
。
我怎样才能做到这一点?
如果您希望域是硬编码且不可编辑的,则需要将其放在服务器上。
在 page_load 上:
string domainName = @"DEFAULT-NAME/";
string userName = TextBoxId.Value; //do some server side checks on value before processing it though
string finalUserName = domainName + userName;
即使您在页面上放置了一个辅助只读文本框,也永远不要相信不可编辑文本框收到的值是您所期望的,因为 POST 变量很容易被操纵。在服务器上添加域,并在页面上文本框附近的标签中显示它(如果需要)。
好吧,如果您想将要求视为:“似乎有一个带有硬编码域名的文本框。” 然后试试这个:
<html>
<style type="text/css">
span.fakeTextBox{
border: 2px inset #EBE9ED;
display: inline-block;
padding: 3px;
font-family:"Times New Roman",Georgia,Serif;
}
span.fakeTextBox input{
border: none;
outline:none;
}
</style>
<body>
<span class="fakeTextBox">
MyDomain\<input type="text" >
<span>
</body>
</html>
用户永远不会知道区别
选项 1:在文本框前显示标签并在阅读时使用 @LonWolf 的代码
选项 2:显示文本框背景图像和左侧填充。在图像中,您可以提供默认名称
选项 3:使用一些 jquery 插件,如下所示:http: //twitter.github.com/bootstrap/base-css.html#forms,请参阅扩展表单控件,它显示了漂亮的文本框前缀和后缀
为什么您需要将它们都放在同一个文本框中?textbox
域名不可编辑(非活动)和textbox
用户名可编辑吗?
或者,您可以将两者放在同一个文本框中。但请确保字符串
域名/
用户未使用验证(JQUERY
或Javascript
)删除
单击文本框时删除域名,然后当他们离开文本框时附加域名。或者将 DOMAIN-NAME 放入标签并将 textBox 放在一边?
您可以将域名放在文本框左侧的标签中。
如果它绝对必须在文本框中显示域,你将不得不纠正一些 javascript 来掩盖它。
可能有一些代码会有所帮助,例如,如果您使用的是 JQuery,这种事情:
你不能。文本框要么被禁用,这意味着您不能编辑任何内容,要么被启用,这意味着您可以编辑所有内容。大多数具有像您这样的要求的应用程序都在文本框前面使用标签来显示不可编辑的部分。