1

我有一个简单的页面:

<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 页面上,我正在显示消息,人们可以对它们做出反应。到目前为止一切顺利,但我想做的是在某些人输入评论时停止自动刷新。我已经尝试过了,请参阅上面代码中的注释“键入时停止并自动重新刷新”。因为评论输入字段在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>
4

1 回答 1

0

使用 angular 和 ng-model 它是一种更简单的数据绑定方法,或者您可以删除 setInterval 并使用setTimeout()将实例化超时函数,然后当计时器用完时,它将执行您的setInterval将不断循环的代码通过代码而不停止,这就是为什么你不断地刷新你应该将 setTimeout 绑定到按键事件,这样你就可以更好地控制事件何时触发。setInterval 是一个不会停止的循环, setTimeout 不会循环它只会触发一次,除非它重新实例化。

于 2013-10-22T21:19:43.710 回答