当输入字段(文本类型)值发生变化时,我试图动态更改变量值。
输入字段值也是动态的。
所以,基本上,当输入字段值改变时,变量值应该相应地改变。
这是我目前的代码:
$('#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>
答案 0 :(得分:0)
$('#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 :(得分:0)
这是一个简单的建议:
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 是等待然后检查$(&#39; #myText&#39;)。val()的值的时间已更改
希望这是你想要的