首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >键入jquery和coldfusion时不刷新

键入jquery和coldfusion时不刷新
EN

Stack Overflow用户
提问于 2013-09-18 21:32:56
回答 1查看 238关注 0票数 1

我有一个简单的页面:

代码语言:javascript
运行
复制
<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的代码如下:

代码语言:javascript
运行
复制
 <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>
EN

回答 1

Stack Overflow用户

发布于 2013-10-23 05:19:44

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18873666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档