2012-02-02 26 views
-1

我在此處使用其他用戶的幫助編寫此文,但無法正常工作。嘗試使用mm/yyyy格式比較開始日期和結束日期

我已經在這個格式有兩個領域,具有maskedinput從這裏>http://digitalbush.com/projects/masked-input-plugin/:MM/YYYY

我想比較結束日期​​比開始時,和禁用提交按鈕,如果是沒有的。但我總是想要用戶,他們可以在不通知開始或結束日期的情況下注冊表單。 所以我只是想比較這兩個領域,當他們有7個字符裏面,並且 功能必須在這個> yyyymm完成,因爲與mmyyyy他們是沒有機會工作正常。

你有什麼想法給我建議嗎?

預先感謝任何幫助;)

HTML

<form class="blockdate"> 
    <input name="stardate"type="text" class="date"/> 
    <input name="enddate" type="text" /> 
    <input name="submit" type="submit" class="date"/> 
</form> 

<div id="msg"></div> 

JS

var compareA = getElementsByName("startdate"); 
var comparen = getElementsByName("enddate"); 
function compare() { 
// Assumes the format mm/yyyy (not mmyyyy, which your example values seem to be in) 
var compareA, compareB; 
compareA = dateA.substring(3) + dateA.substring(0, 2); 
compareB = dateB.substring(3) + dateB.substring(0, 2); 
if (compareA > compareB) { 
     $('#msg').html('Check Stard & Endate.'); 
     $(".submit").prop("disabled",true); 

} 
} 


    jQuery(function($) { 

     $('.blockdate').submit(function() { 
      return compare; 
     }); 

     $(".date").change(function(){ 
      if(datevalue2.length == 7) { 
      compare; 
      } else { 
      clean(); 
      } 
     }); 
    }); 
+0

什麼,這部分是不工作?它有任何工作嗎?你有錯誤信息嗎?或者什麼都沒有發生? – DOK 2012-02-02 23:25:19

+0

你好DOK, 什麼也沒有發生,我不是很熟悉JS – Tomaw 2012-02-02 23:26:27

回答

0

所有enddate犯規首先有一個分配給它的類date。所以你永遠不會抓住那個價值。其次,如果你需要扭轉月份年的順序,那麼就換子串電話:

//   month     year 
compareA = dateA.substring(0, 2) + dateA.substring(3); 

//   year     month 
compareA = dateA.substring(3) + dateA.substring(0,2); 

最後,你應該僅僅指剛使用Date對象來獲取Unix時間戳這是一個給定的一個真正的整數版本您可以使用比較日期:

function compare(start, end) { 

    var start, 
    end, 
    toDate = function(datestr){ 
     return new Date(parseInt(datestr.substring(3)), parseInt(datestr.substring(0, 2))); 
    }; 

    if(toDate(start).getTime() > toDate(end).getTime()) { 
     $('#msg').html('Check Stard & Endate.'); 
     $(".submit").prop("disabled",true); 
     return false; 
    } 

    return true; 
} 
0

由於prodigitalson回答,你的代碼應該是這樣的

HTML

<form class="blockdate"> 
<input name="stardate"type="text" id="dateA" class="date"/> 
<input name="enddate" type="text" id="dateB" class="date"/> 
<input name="submit" type="submit" value="submit" id="btnOk"/> 
</form> 
<div id="msg"></div> 

JS

function compare(start, end) { 

    var start, end, toDate = function(datestr) { 
     return new Date(parseInt(datestr.substring(3)), parseInt(datestr.substring(0, 2))); 
    }; 

    if (toDate(start).getTime() > toDate(end).getTime()) { 
     $('#msg').html('Check Stard & Endate.'); 
     $(".submit").prop("disabled", true); 
     return false; 
    } 

    return true; 
} 

function clean() { 
    $('#msg').html(''); 
    $("#btnOk").removeAttr("disabled"); 
} 

$(document).ready(function() { 

    $('#btnOk').click(function(e) { 
     if (!compare()) e.preventDefault(); 
     return true; 
    }); 

    $(".date").bind("keyup", "change", function() { 

     var startDate = $("#dateA").val(); 
     var endDate = $("#dateB").val(); 

     if (startDate.length == 7 && endDate.length == 7) compare(startDate, endDate); 
     else clean(); 
    }); 

}); 
相關問題