仅当文本框为空时自动刷新页面

时间:2018-07-05 01:31:56

标签: javascript jquery html

我想每10秒重新加载一次页面,除非有人在页面上的文本框中输入内容。显然,我不想在用户键入时刷新。

我知道我可以通过以下方式重新加载页面:

setTimeout(function () {
    window.location.reload(1);
}, 10000);                  

我想我可以检查输入中是否有任何值,但这似乎也不起作用。

setTimeout(function () {
    if ($("input").val == null) {
        setTimeout(function () {
            window.location.reload(1);
        }, 10000);
    }
}, 10000);

3 个答案:

答案 0 :(得分:2)

此解决方案的一个问题是此行:

if ($("input").val == null) { ...

在jQuery .val中实际上是一种方法。尝试将其作为方法调用:

if (!$("input").val()) { ...

还要注意在!之前使用$("input").val()。在jQuery中,没有值的输入将返回一个空字符串。

在JavaScript中,空字符串被视为“假”-大致等同于false。通过否定一个假值,当输入字段为空时,代码中的if条件将得到满足

一个完整的解决方案可能就是这样简单:

setTimeout(function() {
    if (!$("input").val()) {
        window.location.reload(1);
    }
}, 10000);

答案 1 :(得分:1)

这里是修改后的代码及其注释。

首先,如果要表示不同的输入,则应准确使用jQuery选择器来选择它,例如$('#input')$('input:eq(0)')

第二,使用!$('#input').val()进行检查。因为如果jQuery选择器未选择任何元素,则val()函数将返回undefined而不是''空字符串。

如果有任何问题,请告诉我。

// setInterval should fit your situation.
var timeout = setInterval(function() {
    //if ($("input").val == null) {    
    // check if the input value is falsy, note that $().val is a function
    if (!$("input").val()) {
        // you checked the value per 10 seconds, no need to wait another 10 seconds when you checked the value is falsy.
        // setTimeout(function() {
            window.location.reload(1);
            // you'd better pass boolean value to location.reload(), like window.location.reload(true). Code above works too so don't worry.
        // }, 10000);
    }
}, 10000);

// if user key in anything, then clearInterval to stop checking value
$(document).on('input.input', 'input', function(){
  clearInterval(timeout);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input />

答案 2 :(得分:1)

设置超时后,可以将其分配给变量,然后可以使用['1 day', '3 months']取消该变量,如下所示:

set.seed(1680) # for reproducibility
df <- data.frame(particle=rnorm(300,rep(1:3,100),1), cluster = rep(1:3,100))

此方法的优点是您可以在输入更改后停止检查,而不是触发超时,而是在整个页面寿命中每10秒检查一次该值。

检查默认值比仅检查其是否为空更为可靠。如果用户在字段中键入然后删除了他们的文本,则他们可能仍在编辑过程中,但是无论如何都会进行刷新。对照默认值进行检查,还可以根据需要设置自己的默认值。

对不起-我只是注意到您使用的是jQuery,可以这样做:

clearTimeout