日期:2014-05-16  浏览次数:20653 次

onclick与onblur有什么区别吗?
本帖最后由 xilaianzxsc 于 2013-10-19 09:24:40 编辑
login.asp中:

<input onBlur="login_onblur()" name="yhid" type="text" id="yhid" size="30" />
<input type="submit" name="button1" id="button1" value="提交" />
//程序中,上面一句命令中调用函数时,运行一切正常.

如果将上述二行命令改成如下:
<input name="yhid" type="text" id="yhid" size="30" />
<input onClick="login_onblur()" type="submit" name="button1" id="button1" value="提交" />
//运行结果是:页面只是自动刷新一下,无任何反应.

//问题点:同样是相同的函数,为何在onBlur中,能正确运行,而在onClick时,却不能正确运行?


function login_onblur()
{
var yhid=document.getElementById("yhid").value;
var url="cheshi.asp?usercode="+yhid;
request.open("GET",url,true);
request.onreadystatechange=updatepage;
request.send(null);
}

function updatepage()
{
if (request.readyState == 4 && request.status==200)
{
var response=request.responseText;
document.getElementById("gysname").value = response
}


cheshi.asp中如下:

<%
sql = "select * FROM vendor_username where ...." //此处省略

conn = Server.CreateObject("ADODB.Connection")
rs = Server.CreateObject("ADODB.Recordset")
conn.ConnectionString = ........此处先省略
conn.Open()  //连接数据库

rs.ActiveConnection = conn
rs.CursorType = 1 //设置游标类型
rs.LockType = 1 //设置锁定状态
rs.Open(sql) // 打开记录集. 

Response.Clear
Response.Charset="gb2312"
Response.Write(rs("cvenname"));
Response.End;
%>

------解决方案--------------------
仔细检查一下代码,获得将input的type属性改为button试一下,之前我也遇见过同样的问题。
------解决方案--------------------
function updatepage()
{
if (request.readyState == 4 && request.status==200)
{
var response=request.responseText;
alert(1); //此行在onblur时响应,在onclick时不响应
alert(request.responseText);////此行在onblur时响应,在onclick时不响应
document.getElementById("gysname").value = response
}else{
    alert([request.readyState,request.status]);
}



很好!!你已经初步定位问题了  在继续 调试 
你要知道 当你写了 if得时候那么说明 还有种相反的else的情况 你要调试证明 没有进else
如果进了  那么 问题就 出来了
如果进了 else 说明 (request.readyState == 4 && request.status==200) 条件不成立  说明 后台页面没有正常返回
那么 这个时候 我一般会看equest.status 看他得输出值 这个状态码 会说明服务器 发生了什么类型的问题
还有我会在浏览器种 直接 查看  var url="cheshi.asp?usercode="+yhid;
直接在地址栏种 输入 这个 url(注意填写完整的域名等相对位置)
你就可以 直接 修改后台页面的输出进行调试了