100分求教:焦点和光标等问题
cnlyl 2003-06-05 09:39:15 这是我写的一个脚本的缩减版(实际上表单中的text很多,主要输入数字,用onblur检查数字的有效性,如数字正确,数字居右)。我的问题有3个:
1、输入到某个text,结果出现非法数字串,alert()出来报错,按确定按钮,回到出错text框,等待修改,这时,如果我想按"清空重输"按钮,alert()又出来报错,既然我想清空,就没必要去纠正以前输入的错误!(使用什么事件能解决这个问题?注:我用过onchange事件,出错后,如不修改,能从出错text走掉而漏网,为防止漏网,我在CheckNumber函数中,将输入不合法的text对象保存,再为每个text增加onfocus事件,检查是否存在错误的text,如果存在就将焦点给错误哪个text,可错误text焦点又重入onfocus事件程序,控制起来太麻烦!!!)
2、由于我是加前导空格使之居右,如果想修改,须要用onkey事件和粘贴事件控制,如原来为" 1234567",我要在5后面出入数字,每输入一个数字,就要将前面的空格去一个(当然要考虑Insert键状态和插入位置等等);如果粘贴,就要用onbeforepaste事件检查clipboard上数据的长度。光标控制我看到大家都用Range对象和selection.createRange,createTextRange、moveStart、collapse等方法;粘贴要用到clipboardData对象,那位大侠能将这些对象的属性和方法比较详细地介绍一下?
3、其实有c语言的底子,学javascript一点不难,我感到困难的是不知道javascript有那些对象和方法(M$的哪个JavaScript.chm中对象和方法缺少的太多!!!)!那位大侠
有全面一点的javascript对象和方法的资料,公布一下连接地址或给我发邮件(cnlyl@sina.com)。谢谢大家!!!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test</title>
<script language="JavaScript" type="text/JavaScript">
/********************
/ 判断输入数值串的合法性,如果正确在 Field.value 加前导空格使之居右
*********************/
function CheckNumber ( Field ) {
Field.value = AllTrim ( Field.value );
lNumberOk = /^(|-?(0|([1-9]\d*)|((0|([1-9]\d*))?\.\d{1,})){1,1})$/.test ( Field.value );
if ( ! lNumberOk ) {
alert ( "错误:输入非法数字串!" );
Field.focus(); }
else if ( Field.value != "" )
Field.value = Space ( Field.size - Field.value.length ) + Field.value;
return ( lNumberOk );
}
/********************
/ 压缩字符串首尾空格
*********************/
function AllTrim ( cString ) {
return ( cString.match( /^\s*(.*?)\s*$/ )[1] );
}
/********************
/ Space 函数:返回长度为nSPace空字符串
*********************/
function Space ( nSpace ) {
for ( var cSpace = "", i = 0; i < nSpace; cSpace += " ", i ++ );
return ( cSpace );
}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<input type="text" name="field1" size="12" onblur="CheckNumber(this)" tabindex="1">
<input type="text" name="Field2" size="12" onblur="CheckNumber(this)" tabindex="2">
<input type="text" name="Field3" size="12" onblur="CheckNumber(this)" tabindex="3">
<input type="text" name="Field4" size="12" onblur="CheckNumber(this)" tabindex="4">
<p>
<input type="button" value="检查数据" name="B1" onclick="ValidateForm(theForm)" tabindex="33">
<input type="reset" value="清空重输" name="B2" onclick="ResetData()" tabindex="35">
<input type="button" value="提交数据" name="B3" onclick="CheckSubmit()" tabindex="36">
</form>
</body>
</html>