在输入字段更改时刷新 Javascript 变量

Refresh Javascript variable on inputfield change?

本文关键字:刷新 Javascript 变量 输入 字段      更新时间:2023-09-26

当输入字段(文本类型(值更改时,我正在尝试动态更改变量的值。

输入字段值也是动态的。

因此,基本上,当输入字段值更改时,变量值应相应更改。

这是我当前的代码:

$('#map-txt').change(function(e){
var myData = document.getElementById("myText").value;
var myVar = eval("[" + myData + "]");
});

因此,myText的值是一个 AJAX 结果,它将每 X 秒更新一次。工作正常。

myVar的值与myText值相同,但这仅在我加载页面和/或刷新页面时才有效?

我不完全确定它是否不起作用,因为我将jquery与纯javascript混合在一起,或者我所做的是完全错误的。

我需要做的是在不刷新页面的情况下更改myVar的值。

任何帮助将不胜感激。

编辑,这是我的AJAX代码:

<script>
$(document).ready(function () {
    function load() {
        $.ajax({ //create an ajax request to load_page.php
            type: "GET",
            url: "SOMEPAGE.php",
            dataType: "html", //expect html to be returned                
            success: function (response) {
                $("#map-directions").html(response);
                var input = document.getElementById("map-directions").innerHTML;
                document.getElementById("map-txt").value = document.getElementById("map-directions").innerHTML;


                setTimeout(load, 800);

            }
        });
    }
    load();
});
</script>

$('#map-txt').change( ... );仅在用户交互时触发,而不是在通过 AJAX 或其他任何内容更新字段时触发。
只需向通过 AJAX 执行更新的功能添加$('#map-txt').trigger('change');即可。

success: function (response) {
    $("#map-directions").html(response);
    var input = document.getElementById("map-directions").innerHTML;
    document.getElementById("map-txt").value = document.getElementById("map-directions").innerHTML;
    // trigger the update:
    $('#map-txt').trigger('change');
    setTimeout(load, 800);
}

这里有一个简单的建议:

1:初始化 myVar 的值,以便 myVar = myData

2:使用计时器定期检查myData的值是否更改

法典:

// store the initial value of $('#mytext') in the initialValue variable
myVar = $('#myText').val();
setInterval(function(){
if(myVar != $('#myText').val()){
console.log('changed ');
// change the content of the initialValue
myVar =  $('#myText').val();
}
},2000);

请注意2000 是等待的时间,然后检查 $('#myText'(.val(( 的值是否更改

希望这就是你想要的