约束输入框前几位不可变

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在我们开发系统中,曾有过这种需求,就是使文本框中前几位的内容不可变,这里对这个功能进行封装,只需要在输入框中引入css样式即可.

希望对大家有所帮助.

<!-- 欢迎转载,请保留作者和出处,谢谢 -->

<HTML>

<STYLE>

.notChangePartValue

{

input:expression(regInput(this));

}

</STYLE>

<SCRIPT language="javascript">

function regInput(obj)

{

obj.ondrop = function(){return false;}

obj.oncontextmenu = function(){return false;}

obj.onkeydown = function()

{

restrictInputValue(obj)

}

}

/**

* added by LxcJie 2004.7.3

* 限制文本框的前几位不可以改变

* 在文本框的onKeyDown事件中调用restrictInputValue(this)

* 即使最初指定的value值不再允许改变

*/

function restrictInputValue(obj)

{

var range = obj.createTextRange();

//给相应的文本框设置一个自定义属性initWidth,用来保存起始value的宽度

if(typeof(obj.initWidth) == "undefined")

{

obj.initWidth = range.boundingWidth;

}

var selRange = document.selection.createRange();

//如果页面没有选中任何文字

if(selRange.text.length == 0)

{

selRange.setEndPoint("StartToStart",range);

var currentWidth = selRange.boundingWidth;

if(currentWidth < obj.initWidth)

{

if(event.keyCode < 33 || event.keyCode > 40

|| event.keyCode == 46 || event.keyCode == 8)

event.returnValue = false;

}

if(currentWidth == obj.initWidth)

{

if(event.keyCode == 8)

event.returnValue = false;

}

}

//页面选中文字

else

{

selRange.moveEnd("character",-selRange.text.length);

selRange.setEndPoint("StartToStart",range);

var currentWidth = selRange.boundingWidth;

if(currentWidth <= obj.initWidth-1)

{

//对于方向键和home,end,pageup,pagedown不限制

if(event.keyCode < 33 || event.keyCode > 40)

event.returnValue = false;

}

}

}

</SCRIPT>

<BODY>

<INPUT type="text" value="Soft" class="notChangePartValue">

</BODY>

</HTML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航