2016-08-03 121 views
0

我有這樣的jQuery代碼JQuery的警報不會停止顯示

$("#type, #date_from, #date_to").change(function(){ 
    checkFullDay(); 

    if($("#date_to").val() == "") { 
     $("#date_to").val($("#date_from").val()); 
    } 

    if($("#date_to").val() < $("#date_from").val()) { 
     alert("Dates are invalid"); 
    } 
}); 

當警報顯示,它不會停止。

我試圖將其更改爲return alert("Dates are invalid");

,我也嘗試添加return truereturn false警報之後,但做任何的這些阻止它完全顯示。

我怎樣才能讓它只顯示一次?

function checkFullDay() { 
    if($("#type").val() != "Full") { 
     $("#date_to").attr("readonly", true); 
     $("#date_to").val($("#date_from").val()); 
    } else { 
     $("#date_to").attr("readonly", false); 
    } 
} 
+0

你可以分享你的HTML? – Halnex

+0

你是否在checkFullDay函數中改變了這些值? –

+0

更新了該功能的問題 – charlie

回答

1

它會不斷執行,因爲你沒有寫過只檢查一次的條件。添加一個簡單的標誌可以解決您的問題。更改標誌的值僅僅爲第一次,然後將其添加在條件在您的代碼可能是這樣的

<script> 
var flag=0; 
$("#type, #date_from, #date_to").change(function(){ 
    checkFullDay(); 

     if($("#date_to").val() == "") { 
      $("#date_to").val($("#date_from").val()); 
     } 

     if($("#date_to").val() < $("#date_from").val() && flag!=1) { 
     flag=1; 
     alert("Dates are invalid"); 
     } 
}); 
</script> 
+0

是的,那是有效的。但那麼如果將#date_to輸入再次更改爲#date_to之前的另一個日期呢? – charlie

0

我想你只需要在$添加代碼(文件)。就緒(函數(E){})。下面爲我​​工作。我希望這是你正在努力實現的。

</head> 
<body> 
<script> 
$(document).ready(function(e){ 


$("#type, #date_from, #date_to").change(function(){ 


    if($("#date_to").val() == "") { 
     $("#date_to").val($("#date_from").val()); 
    } 

    if($("#date_to").val() < $("#date_from").val()) { 
     alert("Dates are invalid"); 
    } 
}); 
}); 
</script> 
<div> 
From:<input type="date" id="date_from" /> 

To:<input type="date" id="date_to" /> 

</div> 
</body> 

<html>