高分修改一段脚本,谢谢
一个页面,上面有4个TextBox。在TextBox1中使用了AJAX自动完成。
代码如下:
WEB CODE
___________________________________________________
<title> 无标题页 </title>
<script language= "javascript " type= "text/javascript " src= "lookup.js "> </script>
<script language= "jscript " type = "text/javascript ">
mainLoop = function()
{
val = escape(queryField.value);
if (lastVal != val)
{
var response =_Default.GetSearchItems(val);
showQueryDiv(response.value);
lastVal = val;
}
setTimeout( 'mainLoop() ', 100);
return true;
}
</script>
</head>
<body onload= "javascript:InitQueryCode( 'TextBox1 ') ">
_________________________________________________________________________
lookup.js Code
_________________________________________________________________________
//// JScript File
var DIV_BG_COLOR = "#FFFFFF ";
var DIV_HIGHLIGHT_COLOR = "#6699FF ";
var DIV_FONT = "Arial ";
var DIV_PADDING = "2px ";
var DIV_BORDER = "1px solid #CCC ";
var queryField;
var divName;
var ifName;
var lastVal = " ";
var val = " ";
var globalDiv;
var divFormatted = false;
function InitQueryCode( queryFieldName, hiddenDivName )
{
queryField = document.getElementById( queryFieldName );
queryField.onblur = hideDiv;
queryField.onkeydown = keypressHandler;
queryField.autocomplete = "off ";
if( hiddenDivName )
{
divName = hiddenDivName;
}
else
{
divName = "querydiv ";
}
ifName = "queryiframe ";
setTimeout( "mainLoop() ",100);
}
function getDiv(divID)
{
if(!globalDiv)
{
if(!document.getElementById(divID))
{
var newNode = document.createElement( "div ");
newNode.setAttribute( "id ", divID);
document.body.appendChild(newNode);
}
globalDiv = document.getElementById(divID);
var x = queryField.offsetLeft;
var y = queryField.offsetTop + queryField.offsetHeight;
var parent = queryField;
while(parent.offsetParent)
{
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop;
}
if(!divFormatted)
{
globalDiv.style.backgroundColor = DIV_BG_COLOR;
globalDiv.style.fontFamily = DIV_FONT;
globalDiv.style.padding = DIV_PADDING;
globalDiv.style.border = DIV_BORDER;
globalDiv.style.width = "200px ";
globalDiv.style.fontSize = "90% ";
globalDiv.style.position = "absolute ";
globalDiv.style.left = x + "px ";
globalDiv.style.top = y + "px ";
globalDiv.style.visibility = "hidden ";
globalDiv.style.zIndex = 10000;
divFormatted = true;
}
}
return globalDiv;
}
function showQueryDiv(resultArray)
{
var div = getDiv(divName);
while( div.childNodes.length > 0 )
{
div.removeChild(div.childNodes[0]);
}
for(var i = 0; i < resultArray.length; i++)
{
var result = document.createElement( "div ");
result.style.cursor = "pointer ";
result.style.padding = "2px 0px 2px 0px ";
result.style.width = div.style.width;//Add width
_unhighlightResult(result);
result.onmousedown = selectResult;
result.onmouseover = highlightResult;
result.onmouseout = unhighlightResult;
var value = document.createElement( "span ");
value.className = "value ";
value.style.textAlign = "left ";
value.style.fontWeight = "bold ";
value.innerHTML = resultArray[i];
result.appendChild(value);
div.appendChild(result);
}
showDiv(resultArray.length > 0);
}
function selectResult()
{
_selectResult(this);
}
function _selectResult( item )
{
var spans = item.getElementsByTagName( "span ");
if( spans )
{
for(var i = 0; i < spans.length; i++)
{
if( spans[i].className == "value " )
{
queryField.value = spans[i].innerHTML;
lastVar = val = escape( queryField.value );
mainLoop();
queryField.focus();
showDiv( false );
return;
}
}
}
}
function highlightResult()
{
_highlightResult( this );
}
function _highlightResult( item )
{
item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;
}
function unhighlightResult()
{
_unhighlightResult( this );
}
function _unhighlightResult( item )
{
item.style.backgroundColor = DIV_BG_COLOR;
}
function showDiv( show )
{
var div = getDiv( divName );
if( show )
{
div.style.visibility = "visible ";
}
else
{
div.style.visibility = "hidden ";
}
adjustiFrame();
}
function hideDiv()
{
showDiv( false );
}
function keypressHandler(evt)
{
var div = getDiv( divName );
if( div.style.visibility == "hidden " )
{
return true;
}
if( !evt && window.event )
{
evt = window.event;
}
[解决办法]
太长了,帮顶
[解决办法]
获取焦点:onfocus
[解决办法]
在回车或TAB事件里写就是了啊,焦点转移直接用获取焦点就行了TextBox2.onfocus()
<script language=javascript for=document event=onkeydown>
switch(event.keyCode)
{
case 13:
TextBox1=name;
TextBox2=Sex;
TextBox3=Age;
TextBox4=Address;
TextBox2.onfocus();
break;
...
[解决办法]
用*分解字符串,分成4个,在分别添加到4个TextBox中去, 在onkeyup中写:
if(keyCode==13)
var myVariable = TextBox1.text;
var stringArray = myVariable.split( "* ");
TextBox1.text = stringArray[0].replace(/[^\u4E00-\u9FA5]/g, " ");
TextBox2.text = stringArray[1].replace(/[^\u4E00-\u9FA5]/g, " ");
TextBox3.text = stringArray[2].replace(/[^\d]/g, " ");
TextBox4.text = stringArray[3].replace(/[^\u4E00-\u9FA5]/g, " ");
[解决办法]
晕,那不就只是分解字符串吗?不用再弄那么多代码在那嘛。就只说要把王芳 (* 女 * 20 * 上海)分解成4个就行了嘛。楼上那个方法也行,不过不如开始就把(和)replace掉,然后用split直接就分成4个了
