javascript中从输入框跳出后进行数据校验,错误情况下事件参数可以阻止跳离吗? 把各textbox的onblur事件贴出来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 加个标识就可以解决这个问题了。像下面这样改一下试试。var f = false;function CheckData(){ if(f) return; f = true; if (this.id=="TextBox2") { if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) { alert("数据关联校验错误!"); this.select(); this.focus();// return; } } else if (this.id=="TextBox3") { if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) { alert("数据关联校验错误!"); this.select(); this.focus();// return; } } f=false;} 不过感觉楼主的检查逻辑不是很合理。比如当 textbox1输入0的时候把 textbox2, textbox3的设置为只读是不是更好些。 function CheckData() { if (this.id=="TextBox1"&&this.value.trim()=="0") { document.getElementById("TextBox2").value="0"; document.getElementById("TextBox2").readOnly=true; document.getElementById("TextBox3").value="0"; document.getElementById("TextBox3").readOnly=true; }} 这样2,3都不给他输入不就可以了 3楼的方法可以解决问题,不过我还有一个一问就是你的onblur函数是在哪里写着呢?如果写到INPUT属性里面的话,this关键字所指的应该是window对象,而不是element吧? 第一个问题,不要像3楼那么复杂(没有测试):function CheckData() { if (this.id=="TextBox2") { if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) { alert("数据关联校验错误!"); this.select(); this.focus(); return false; } } else if (this.id=="TextBox3") { if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) { alert("数据关联校验错误!"); this.select(); this.focus(); return false; } } } 最后一个问题,直接写在input里面,this指向当前那个input,typeof是object举例:<input type="text" value="测试" onblur="alert(this.value);"> return false; 出错了,本来是加红的,结果直接把代码写出来了,lz理解一下测试一下吧, 楼上的代码似乎不行吧?这个关键和触发onblur()事件有关对于this关键字,如果写在input属性里面,那指的就是element,但是如果是把函数CheckData()写在里面,而用一下这种方式引用,那就不是element了onblur = 'CheckData()' 做了个sample,给你参考一下。<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <script language="JavaScript"> var f = false; function $(id){ return document.getElementById(id); } var ct = 0; function CheckData(obj){ if (f) return; f = true; if (obj.id == "TextBox2" || obj.id == "TextBox3") { if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) { obj.select(); alert("数据关联校验错误!"); f = false; } } } </script> <body> <input type="text" id="TextBox1" value="0"> <br> <input type="text" id="TextBox2" onblur="CheckData(this);"> <br> <input type="text" id="TextBox3" onblur="CheckData(this);"> <br> </body></html> 前面的代码有点错误。再发一次。<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <script language="JavaScript"> var f = false; function $(id){ return document.getElementById(id); } function CheckData(obj){ if (f) return; f = true; if (obj.id == "TextBox2" || obj.id == "TextBox3") { if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) { obj.select(); alert("数据关联校验错误!"); } } f = false; } </script> <body> <input type="text" id="TextBox1" value="0"> <br> <input type="text" id="TextBox2" onblur="CheckData(this);"> <br> <input type="text" id="TextBox3" onblur="CheckData(this);"> <br> <input type="text" id="TextBox4"> <br> </body></html> 上面var f = false可以实现,不过事件为onblur不成功,事件为onfocusout倒可以。anjing5566的return false不成功。我记得以前用delphi,在delphi中事件有参数,可以设置参数的值,来阻止跳转。看来web下好像不行。 我在IE6上测试使用onblur是没问题的.用onfocusout也可以.不过只有IE6以上的版本才支持. 显示星期 请问javascript数组对象引用问题? html 页面内可以引用吗? 使用dojo控件 Tree时,tree为空 请教关于一个程序的难点句式 怎样能实现窗体最前(急,在线等。。。) JScript 中,我用FSO 是否可以操作别人的机器上的硬盘文件??? 在一个函数中把对象存入一个数组 如何在输入的时候字符一直为大写?(高手请进) webrtc 回音消除 js 很简单的问题,把一个图片路径用js赋给<img的src即可!!! 关于一个最简单的输入限制
像下面这样改一下试试。
var f = false;
function CheckData()
{
if(f) return;
f = true;
if (this.id=="TextBox2")
{
if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
{
alert("数据关联校验错误!");
this.select();
this.focus();
// return;
}
}
else if (this.id=="TextBox3")
{
if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
{
alert("数据关联校验错误!");
this.select();
this.focus();
// return;
}
}
f=false;
} 不过感觉楼主的检查逻辑不是很合理。
比如当 textbox1输入0的时候把 textbox2, textbox3的设置为只读是不是更好些。
{ if (this.id=="TextBox1"&&this.value.trim()=="0") {
document.getElementById("TextBox2").value="0";
document.getElementById("TextBox2").readOnly=true;
document.getElementById("TextBox3").value="0";
document.getElementById("TextBox3").readOnly=true;
}}
这样2,3都不给他输入不就可以了
{
if (this.id=="TextBox2")
{
if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
{
alert("数据关联校验错误!");
this.select();
this.focus();
return false;
}
}
else if (this.id=="TextBox3")
{
if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
{
alert("数据关联校验错误!");
this.select();
this.focus();
return false;
}
}
} 最后一个问题,直接写在input里面,this指向当前那个input,typeof是object
举例:<input type="text" value="测试" onblur="alert(this.value);">
出错了,本来是加红的,结果直接把代码写出来了,lz理解一下测试一下吧,
对于this关键字,如果写在input属性里面,那指的就是element,但是如果是把函数CheckData()写在里面,而用一下这种方式引用,那就不是element了
onblur = 'CheckData()'
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<script language="JavaScript">
var f = false;
function $(id){
return document.getElementById(id);
}
var ct = 0;
function CheckData(obj){
if (f)
return;
f = true;
if (obj.id == "TextBox2" || obj.id == "TextBox3") {
if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) {
obj.select();
alert("数据关联校验错误!");
f = false;
}
}
}
</script>
<body>
<input type="text" id="TextBox1" value="0">
<br>
<input type="text" id="TextBox2" onblur="CheckData(this);">
<br>
<input type="text" id="TextBox3" onblur="CheckData(this);">
<br>
</body>
</html>
再发一次。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<script language="JavaScript">
var f = false;
function $(id){
return document.getElementById(id);
}
function CheckData(obj){
if (f)
return;
f = true;
if (obj.id == "TextBox2" || obj.id == "TextBox3") {
if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) {
obj.select();
alert("数据关联校验错误!");
}
}
f = false;
}
</script>
<body>
<input type="text" id="TextBox1" value="0">
<br>
<input type="text" id="TextBox2" onblur="CheckData(this);">
<br>
<input type="text" id="TextBox3" onblur="CheckData(this);">
<br>
<input type="text" id="TextBox4">
<br>
</body>
</html>
用onfocusout也可以.
不过只有IE6以上的版本才支持.