javascript-JavaScript onchange运行一次失效

问题描述

JavaScript onchange运行一次失效

载入时运行了一次,之后失效了,代码如下

add.jsp

 <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/x-icon" href="../favicon.ico" />
<title>添加</title>
<link href="/IMS/css/css.css" rel="stylesheet" type="text/css">
 <script src="/IMS/lib/MakeRequest.js"></script>
<script>
window.onload = initForm;

function initForm() {
     makeRequest(document.getElementById("aname"));
}
</script>
</head>
<body>
    <form action="Department111" method="post" name="add" id="add">
    <input type="hidden" name="action" value="add">
            <table>
                <tr>
                    <td width="120" align="right">名称:</td>
                    <td width="180" align="left"><input name="aname" type="text" id="aname" autofocus="autofocus" date="Department?action=s&name=" class="reqd"></td>
                </tr>
                <tr>
                    <td align="right">权限:</td>
                    <td align="left"><input name="level" id="level" class="reqd"></td>
                </tr>
                <tr>
                    <td align="right">
                            <a href="index.jsp">返回</a>
                        </td>
                    <td align="left"><input name="add" type="submit" id="add" value="添加"></td>
                </tr>
            </table>
    </form>
</body>
</html>

MakeRequest.js

function makeRequest(obj) {
    obj.addEventListener("onchange", makeR(obj), false)
    function makeR(obj) {
        console.log(obj);
        var url = obj.getAttribute("date") + obj.value;
        console.log(obj.value);
        console.log(url);
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else {
            if (window.ActiveXObject) {
                try {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    console.log(e);
                }
            }
        }

        if (xhr) {
            xhr.addEventListener("readystatechange", showContents, false);
            xhr.open("GET", url, true);
            xhr.send(null);
        } else {
            msg.innerHTML = "Sorry, but I couldn't create an XMLHttpRequest";
        }
        function showContents() {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    var outMsg = xhr.responseXML.getElementsByTagName("s")[0].childNodes[0].nodeValue;
                    if (outMsg == "yes") {
                        alert("已存在");
                    }
                } else {
                    var outMsg = "There was a problem with the request "
                            + xhr.status;
                    alert(outMsg);
                }
            }

        }
    }

}

解决方案

obj.addEventListener("onchange", makeR(obj), false)
==>
obj.addEventListener("change", function(){makeR(obj)}, false)

解决方案二:

将 obj.addEventListener("onchange", makeR(obj), false)改为
obj.addEventListener("onchange",function(){makeR(obj);}, false)

解决方案三:

最终版本

 function makeRequest(obj) {

    obj.addEventListener("blur", function() {
    doit(obj)
    }, false);

    function doit(obj) {
    if (obj.value != null) {
        var url = obj.getAttribute("date") + obj.value;
        var xhr;
        if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
        } else {
        if (window.ActiveXObject) {
            try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            console.log(e);
            }
        }
        }
        if (xhr) {
        xhr.addEventListener("readystatechange", showContents, false);
        xhr.open("POST", url, true);
        xhr.send(null);
        } else {
        msg.innerHTML = "Sorry, but I couldn't create an XMLHttpRequest";
        }

    }
    function showContents() {
        if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            var outMsg = xhr.responseXML.getElementsByTagName("s")[0].childNodes[0].nodeValue;
            if (outMsg == "1") {
            alert("【" + obj.value + "】已存在");
            obj.focus();
            obj.select();
            }
        } else {
            var outMsg = "There was a problem with the request "
                + xhr.status;
            alert(outMsg);
        }
        }
    }
    }
}

时间: 2024-09-17 04:03:49

javascript-JavaScript onchange运行一次失效的相关文章

函数-javascript触发onchange失败

问题描述 javascript触发onchange失败 网页上有个textarea ,代码如下: <textarea class="text " id="arid_WIN_1_301398800" cols="20" maxlen="0" style="top: 0px; left: 82px; width: 183px; height: 47px;" arautocak="0"

Winform下动态执行JavaScript脚本获取运行结果,谈谈网站的自动登录及资料获取操作

为了有效阻止恶意用户的攻击,一般登录都会采用验证码方式方式处理登录,类似QQ的很多产品的验证码处理,但在一些OA系统中,系统通过非对称加密方式来处理登录的密码信息,登录页面每次提供对密码进行加密的公钥是不同的,因此如果要模拟登录,就需要先获取公钥,然后根据公钥把输入的密码加密,然后通过POST提交给服务器进行验证登录.由于公钥是页面刷新变化的,而加密是通过Javascript脚本进行加密,如下面的登录页面源码所示.   <meta http-equiv="Content-Type"

javascript-一个JAVASCRIPT代码,运行效果不出来

问题描述 一个JAVASCRIPT代码,运行效果不出来 <html><head><title>Ajax Test</title><script language=""javascript"" type=""text/javascript"" src=""ajax.js""></script></head>

详解javascript new的运行机制_javascript技巧

和其他高级语言一样javascript 中也有new 运算符,我们知道new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过new 来产生对象? 本文将带你一起来探索 javascript 中 new 的奥秘... 一.认识new运算符 function Animal(name){ this.name = name; } Animal.color = "black"; Animal.prototype.say = f

JavaScript获取当前运行脚本文件所在目录的方法_javascript技巧

本文实例讲述了JavaScript获取当前运行脚本文件所在目录的方法.分享给大家供大家参考,具体如下: DirectoryUtility = { // function getCurrentDirectory: returns currentDirectory path // with a trailing backslash. getCurrentDirectory : function ( ) { var scriptFullName = WScript.ScriptFullName; va

让JavaScript的Alert弹出框失效的方法禁止弹出警告框_javascript技巧

本文将介绍让JavaScript的Alert弹出框失效的方法,也就是禁止让JS弹出警告框. 因为现在都提倡绿色上网环境,弹出框难免会影响你的心情,所以通过以下代码可将Js弹出框屏蔽掉. <script LANGUAGE="JavaScript"> <!-- window.alert = function(str){ return ; } alert("不能弹出警示框");//--> </script> 实现思路是对"al

javascript的onchange事件与jQuery的change()方法比较_javascript技巧

改变一下思路变成键盘按键事件,如下: <asp:TextBox ID="txtName" runat="server" onkeyup="fNameChange();"></asp:TextBox> 这里有一点毛病是,你复制粘贴的内容,无法触发这个事件.下面是相关的一些代码: 复制代码 代码如下: function fNameChange(){ if($('#txtName').val().length<6){ jQ

帮我看看这段代码JavaScript为什么没运行

问题描述 <%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtm

javascript ? 号:号运行算

条件运算符 JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符. 语法 variablename=(condition)?value1:value2 <script language="网页特效" type="text/javascript"> <!-- confirmVal = confirm("click"); alertStr = confirmVal ? "You clicked OK&quo