javascript如何实现像输入法一样的效果,即打一个字,就提示下一个字或一个词组。

JavaScript015

javascript如何实现像输入法一样的效果,即打一个字,就提示下一个字或一个词组。,第1张

输入框定义onclick onblur事件,打入一个字,或词组触发Javascript方法,javascript方法中用Ajax请求数据库匹配 like %你输入的字%,有匹配则返回给JS,JS再把其放到页面的适合位置

<html><head>

<title>打字效果的文字特效</title>

<script language="JavaScript">

var layers = document.layers

var style = document.all

var both = layers || style

var idme = 908601

if(layers) //如果不是ie浏览器

{

layerRef = 'document.layers'

styleRef = ''

}

if(style) //如果是ie浏览器

{

layerRef = 'document.all'

styleRef = '.style'

}

function writeOnText(obj, str) { //函数在页面上打印字符串

if(layers) {

with(document[obj]) {

document.open()

document.write(str)//write方法打印字符串

document.close()

}

}

if(style) eval(obj+'.innerHTML = str')//使用innerHTML属性显示字符串

}

var dispStr = new Array("javascript源码大全")//字符串数组

var overMe = 0

function txtTyper(str, idx, idObj, spObj, clr1,clr2, delay, plysnd) //函数:实现打字效果

{

var tmp0 = tmp1 = '', skip = 100

if(both &&idx <= str.length) {

if(str.charAt(idx) == '<') {

while(str.charAt(idx) != '>') idx++

idx++

}

if(str.charAt(idx) == '&' &&str.charAt(idx+1) != '') {

while(str.charAt(idx) != '') idx++

idx++

}

tmp0 = str.slice(0, idx)

tmp1 = str.charAt(idx++)

if(overMe==0 &&plysnd==1) {

if(navigator.plugins[0]) {

if(navigator.plugins["LiveAudio"][0].type == "audio/basic" &&navigator.javaEnabled()) {

document.embeds[0].stop()

setTimeout("document.embeds[0].play(false)", 100)

}

} else if(document.all) {

ding.Stop()

setTimeout("ding.Run()", 100)

}

overMe = 1

} else {

overMe = 0

}

writeOnText(idObj, "<span class="+spObj+"><font color='"+clr1+"'>"+tmp0+"</font><font color='"+clr2+"'>"+tmp1+"</font></span>")

//调用writeOnText函数将字符显示在网页上

setTimeout("txtTyper('"+str+"', "+idx+", '"+idObj+"', '"+spObj+"', '"+clr1+"', '"+clr2+"', "+delay+", "+plysnd+")", delay)

}

}

function init()

{

txtTyper(dispStr[0], 0, 'tt10', 'ttll', '#339933', '#99FF33', 300, 0) //调用txtTyper函数开始打字

}

</script>

</head>

<body onLoad="init()">

<center>

<h1>打字效果的文字特效</h1>

<hr />

<div class="ttll" id="tt10"></div>

</center>

</body>

</html>

用IE 打开 试过了。。。

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>标题页</title>

<script language=javascript>

var layers =document.layers

var style=document.all

var both=layers||style

var idme=908601

if(layers)

{ layerRef='document.layers'styleRef =''}

if(style)

{ layerRef='document.all'styleRef = '.style'}

//开始参数的定义

function writeOnText(obj,str)

{

if(layers)with(document[obj])

{ document.open()document.write(str)document.close()}

if(style)eval(obj+'.innerHTML=str')

}

var dispStr=new Array("证监会称将严查利用内幕信息牟取不当利益行为!")//要出现的文本

var overMe=0

//逐字显示的方法

function txtTyper(str,idx,objId,objStyle,color1,color2,delay,plysnd)

{

var mystr='',strchar=''

var skip=200

if (both &&idx<=str.length) {

if (str.charAt(idx)=='<'){ while(str.charAt(idx)!='>') idx++}

if (str.charAt(idx)=='&'&&str.charAt(idx+1)!=' '){ while (str.charAt(idx)!= '')idx++}

mystr = str.slice(0,idx) //返回数组从开始到指定位置的字符串

strchar = str.charAt(idx++)//当前地址的字符

if (overMe==0 &&plysnd==1)

{

//针对浏览器的不同,调用不同的显示方法

if (navigator.plugins[0]){

if(navigator.plugins["LiveAudio"][0].type=="audio/basic" &&navigator.javaEnabled())

{document.embeds[0].stop()

setTimeout("document.embeds[0].play(false)",100)}

} else if (document.all){

ding.Stop()

setTimeout("ding.Run()",100)}

overMe=1}else overMe=0

writeOnText(objId, "<span class="+objStyle+"><font color='"+color1+"'>"+mystr+"</font><font color='"+color2

+"'>"+strchar+"</font></span>")

setTimeout("txtTyper('"+str+"', "+idx+", '"+objId+"', '"+objStyle+"', '"+color1+"', '"+color2+"', "+delay+" ,"+plysnd+")",delay)}}

function init()

{txtTyper(dispStr[0], 0, 'div1', 'style1', '#66CCBB', '#000000', 400, 0)}

</script>

<BODY onload=init()>

<DIV class=style1 id=div1></DIV>

</BODY>

</html>