<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onfocus" ONEVENT="txtint_onfocus()" />
<PUBLIC:ATTACH EVENT="onkeypress" ONEVENT="txtint_onkeypress()" />
<PUBLIC:ATTACH EVENT="onpaste" ONEVENT="txtint_onpaste()" />
<PUBLIC:ATTACH EVENT="onblur" ONEVENT="txtint_onblur()" />
<SCRIPT LANGUAGE="JScript">
function txtint_onfocus()
{
	element.select();
}

function checktxtintinput(sInsert)
{
	//在component中，必须使用window.document。仅使用document不行
	//估计在component中，document有别的用途

	//源文本区域。
	var srcRange = window.document.selection.createRange();

	//整个文本区域。
	element.select();
	var allRange = window.document.selection.createRange();

	//获取选择文本的起始位置
	var workRange = srcRange.duplicate();
	workRange.setEndPoint("EndToStart", allRange);
	var len1 = workRange.text.length;
	workRange.collapse(false);
	workRange.select();

	//获取选择文本的结束位置
	workRange = srcRange.duplicate();
	workRange.setEndPoint("StartToStart",allRange);
	var len2 = workRange.text.length;
	workRange.collapse(false);
	workRange.select();
    //如果是只读的，就返回
    if (element.readOnly==true)
        return;
    
	//不响应回车和ESC
	if (event.keyCode==13 || event.keyCode==28)
		return;

	var s1 = element.value.substring(0, len1);
	var s2 = element.value.substring(len2, element.value.length);
	var s = s1 + sInsert + s2;
	
	//允许为空串，并且允许出现单独一个“-”
	if (s=="")
		return;
	if (s=="-")
	{
		srcRange.text = "";
		return;
	}

	//进行整数匹配，无位数限制。0单独处理
	var reg = /^(?:[-]?[1-9][0-9]*|0)$/;

	//匹配不成功，则恢复原来的文本状态；否则，删除选中的文本内容。
	if (s.match(reg)==null)
	{
		event.returnValue = false;
		srcRange.select();
	}
	else
		srcRange.text = "";
}

function txtint_onkeypress()
{
	checktxtintinput(String.fromCharCode(event.keyCode));
}

function txtint_onpaste()
{
	checktxtintinput(window.clipboardData.getData("Text"));
	//本事件结束后，如果不成功，文本状态未能恢复到选中状态，不知道是什么事件影响了恢复。
}

function txtint_onblur()
{
	//单独一个“-”，处理为0
	if (element.value=="-")
		element.value = "0";
}
</SCRIPT>
<PUBLIC:COMPONENT>