2012-03-07 73 views
2

我有一个<input> html元素。 该元素被默认值填充。 用户应该能够在默认文本末尾附加新文本,但不能删除默认值。 我该如何解决这个问题?添加文字到<input>元素,但不要删除它

+8

我会在文本_before_上显示默认文本,并且使输入为可选项。你可以使用CSS来给文本添加文本,因为它可以直接连接到''字段。 – Jona 2012-03-07 13:58:31

+0

肯定是最好的解决方案。否则,您需要检查pressUp,然后查看输入字符串是否包含“默认值”,如果不是用“默认值”替换内容。 – 2012-03-07 14:02:56

回答

2

,您可以用JavaScript做到这一点:

listen('load', window, init); 

function init() { 
    var test = document.getElementById('test'); 
    var val = test.value; 
    listen('keydown', test, replaceVal); 
    listen('keyup', test, replaceVal); 
    function replaceVal() { 
    tempVal = test.value; 
    if (tempVal.indexOf(val) === -1) { 
     tempVal = val; 
     test.value = val; 
    } 
    } 
} 

function listen(event, elem, func) { 
    if (elem.addEventListener) { 
    elem.addEventListener(event, func, false); 
    } else if (elem.attachEvent) { 
    elem.attachEvent('on' + event, func); 
    } 
} 

我已经在这里建立了一个的jsfiddle:http://jsfiddle.net/sjfwz/

+0

它正在工作。谢谢 – Martynas 2012-03-07 14:46:16

+0

不客气! – 2012-03-07 14:47:20

0

试试这个

脚本:

<script type="text/javascript"> 
    function MyFunction() { 

     document.getElementById('TextBox3').value = document.getElementById('defaultValue').value; 

     //if asp:textbox control should be work below 
     document.getElementById('<%=TextBox4.ClientID%>').value = document.getElementById('defaultValue').value; 

    } 

</script> 
    } 


<body onLoad="javascript:MyFunction();"> 
<input type="hidden" id="defaultValue" name="defaultValue" value="defaultValue"/> 
<input type="text" id="TextBox3" /> 
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
</body> 
0

你可以还将输入值与ke上的正则表达式模式进行比较ydown事件。如果正则表达式不匹配,则可以拒绝按键,例如退格键。

0

如果你不想做一些复杂的JS,你可以使用带有一些填充的背景图像。