Javascript 当第二个输入框填充第一个框中的数据时显示警报

Javascript 当第二个输入框填充第一个框中的数据时显示警报,javascript,html,ajax,Javascript,Html,Ajax,我随身携带此代码: <input id="qfront" name="qfront" placeholder="Ketik Nama Kampus ..." value="" type="text" onKeyPress="strQuery(this.value)"/> *<!--first inputbox-->* <script> function strQuery(str) { if (str.length == 0) { d

我随身携带此代码:

<input id="qfront" name="qfront" placeholder="Ketik Nama Kampus ..."
value="" type="text" onKeyPress="strQuery(this.value)"/> *<!--first inputbox-->*
<script>
function strQuery(str) {
     if (str.length == 0) {
         document.getElementById("valdata").value = "";
         return;
     } else {
         var xmlhttp = new XMLHttpRequest();
         xmlhttp.onreadystatechange = function() {
             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("valdata").value = xmlhttp.responseText;
             }
         }
         xmlhttp.open("POST", "inc.php?q="+str, true);
         xmlhttp.send(null);
     }
}
</script>
<input id="valdata" name="valdata" value="" type="text" onChange="showalert()"/>*<!--2nd inputbox-->*
<script>
function showalert(){
    var X =document.querySelector("#valdata").value;
    alert(X);
}
</script>
**
函数strQuery(str){
如果(str.length==0){
document.getElementById(“valdata”).value=“”;
返回;
}否则{
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“valdata”).value=xmlhttp.responseText;
}
}
open(“POST”,“inc.php?q=“+str,true”);
xmlhttp.send(空);
}
}
**
函数showalert(){
var X=document.querySelector(“#valdata”).value;
警报(X);
}
当我运行
函数strQuery(str)
时,它100%工作,并在第二个输入框(
#valdata
)中显示结果。当第二个输入框包含数据时(来自第一个输入框)。第二个框不显示警报


我错过什么了吗?我该怎么做?(请不要使用jquery)。非常感谢

showart()之后似乎缺少了双引号

但另外,我认为onchange可能只响应用户的输入。如果是这种情况,只需将代码更改为:

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    document.getElementById("valdata").value = xmlhttp.responseText;
    document.getElementById("valdata").onchange();
}

我终于找到了解决我问题的办法。 我将第二个JS(showalert)的位置固定到第一个JS中,如下所示:

    <input id="qfront" name="qfront" placeholder="Ketik Nama Kampus ..."
 value="" type="text" onKeyPress="strQuery(this.value)"/>
            <script>
            function strQuery(str) {
                 if (str.length == 0) {
                     document.getElementById("valdata").value = "";
                     return;
                 } else {
                     var xmlhttp = new XMLHttpRequest();
                     xmlhttp.onreadystatechange = function() {
                         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                            document.getElementById("valdata").value = xmlhttp.responseText;
                            showalert()
                         }
                     }
                     xmlhttp.open("POST", "inc.php?q="+str, true);
                     xmlhttp.send(null);
                 }
            }
            function showalert(){
                var X =document.querySelector("#valdata").value;
                alert(X);
            }
            </script>
            <input id="valdata" name="valdata" value="" type="text"/>

函数strQuery(str){
如果(str.length==0){
document.getElementById(“valdata”).value=“”;
返回;
}否则{
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“valdata”).value=xmlhttp.responseText;
showarert()
}
}
open(“POST”,“inc.php?q=“+str,true”);
xmlhttp.send(空);
}
}
函数showalert(){
var X=document.querySelector(“#valdata”).value;
警报(X);
}

非常感谢您的讨论。

请澄清-问题是,当第二个有数据/字符串时,警报不会显示。请。我已经编辑了我的问题。您的意思是,如果第二个输入框有一个值
xyz
,然后当您运行
strQuery
功能时,警报不会显示?是的。就这样。xyz来自第1输入框需要检查什么?不,不是双重事件。好的,让我编辑我的question@HermanNz这很奇怪-哦,我错了-我会删除我之前的评论