我有一个简单的页面:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function () {
$('#myform').on('submit', function (e) {
$.ajax({
type: 'post',
url: 'test2.cfm',
data: $('form').serialize(),
success: function () {
//alert('form was submitted');
$("#alldetails").load('details.cfm?randval='+ Math.random());
document.myform.tekst.value = "";
}
});
e.preventDefault();
});
});
</script>
</head>
<body>
<form id="myform" name="myform">
<input type="text" name="text"><br>
<input name="submit" type="submit" value="Submit">
</form>
<br>
<div id="alldetails">Loading</div>
<!--- stop when typing comment check and auto refresh --->
<script>
var isTyping = false;
$("#input-box").focus(function() {
isTyping = true;
});
$("#input-box").blur(function() {
isTyping = false;
});
$(document).ready(function() {
$("#alldetails").load("details.cfm");
$(document).ready(function() {
var refreshId = setInterval(function() {
if (!isTyping) {
$("#alldetails").load('details.cfm?randval='+ Math.random());
}}, 20000);
});
$.ajaxSetup({ cache: false });
});
</script>
</body>
</html>
详细信息被加载到div (allDetails)中,到目前为止一切正常。现在,在我的details.cfm页面上,我显示了这些消息,人们可以对它们做出反应。到目前为止一切正常,但我想要做的是,当有人输入评论时,停止自动刷新。我已经尝试过了,请看上面代码中的注释“stop when typing and auto rerfesh”。因为注释输入字段在comment.cfm页面上,所以它忽略了这个脚本。
希望你能理解这个问题。
致以问候!
编辑:
Details.cfm的代码如下:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function () {
$('#testform').on('submit', function (e) {
$.ajax({
type: 'post',
url: 'save_comment.cfm',
data: $('form').serialize(),
success: function () {
alert('form was submitted');
}
});
e.preventDefault();
});
});
</script>
<cfquery datasource="#ns#" name="getdata">
select text, timeline_id
from timeline
order by t_datum desc
</cfquery>
<cfoutput query="getdata">
<p>#tekst#</p>
<cfform id="testform">
<cfinput type="hidden" value="#timeline_id#" name="timeline_id">
<cfinput type="text" name="comment#timeline_id#" id="input-box"><input type="submit">
</cfform>
</cfoutput>
发布于 2013-10-23 05:19:44
使用angular和ng-它是一种更简单的方法来做数据绑定,或者你可以删除setInterval并使用 setTimeout ()超时函数将被实例化,然后当计时器到期时它将执行代码你的setInterval将继续循环代码而不会停止,这就是为什么你得到不断发生的刷新你应该将setTimeout绑定到key up事件,这样你就可以更多地控制事件何时触发。setInterval是一个不会停止的循环,setTimeout不会循环它只会触发一次,除非它被重新实例化。
https://stackoverflow.com/questions/18873666
复制相似问题