0

这给了我输入的原始值,而不是编辑过的值。

<input type='text' value='test'>
this.parentNode.getElementsByTagName('input')[0].value

onchage 中的 js 事件

我现在有这样的东西,但我没有得到它的输入......

var inputs=document.getElementById('wrap').getElementsByTagName('input');
        for (var i = inputs.length - 1; i >= 0; i--) {
            inputs[i].onchange=function(){
                var x=this.parentNode.appendChild(document.createElement("a"));
                x.innerHTML="upravit";
                x.onclick=function(){
                    var hr = new XMLHttpRequest();
                    console.log(this.parentNode.getElementsByTagName('input')[0].value);    

甚至 console.log 本身也给了我默认值而不是新的值...

                        var vars = "menu=1&name=";
                        hr.open("POST", "Ajax/UpdateCategory.php", true);
                        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        hr.onreadystatechange = function(){
                            if(hr.readyState==4&&hr.status==200){
                                var return_data = hr.responseText;
                                if(return_data!="ok"){
                                    alert(return_data);
                                }
                            }
                        }
            hr.send(vars);
                    }
                }
            };
4

3 回答 3

0

你可以这样做

html

<input type='text' value='test' onchange="dostuff(this)" />

js

function dostuff(s) {

    alert(s.value);

}

这是一个小提琴

如果这不适合您的情况,请告诉我们您如何将问题中的 js 代码与 html 代码中的输入绑定。

于 2013-05-20T12:25:09.290 回答
0

请尝试这个demo来学习onchange handler:http ://www.w3school.com.cn/tiy/t.asp?f=hdom_onchange

并与此演示进行比较:http ://www.w3school.com.cn/tiy/t.asp?f=hdom_onkeyup

然后你就会知道,只需使用 onkeyup() 代替就可以了。

=== 编辑内容 === html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>
        window.onload = function () {
            var inputs=document.getElementById('wrap').getElementsByTagName('input');
            var x=document.createElement("a");
            var data;
            x.innerHTML="upravit";
            x.onclick=function(){
                alert(data);
            }
            for (var i = inputs.length - 1; i >= 0; i--) {
                inputs[i].onchange=function(){
                    this.parentNode.appendChild(x);
                    data = this.value;
                }
            }
        };
    </script>
</head>
<body>
<div id="wrap">
    <input type='text'>
    <input type='text'>
    <input type='text'>
</div>
</body>
</html>

请在您的本地环境中运行此 html,我认为这符合您的需求。

于 2013-05-20T12:27:57.920 回答
0
<input type='text' value='test' onchange="dostuff(this.value)" />

function dostuff(value) {    
    alert(value);    
}
于 2013-05-20T12:32:26.423 回答