2016-04-01 35 views
0

date-picker sınıfı olarak tanımlanmış olan datepicker var. Tarihin geçerli olup olmadığını kontrol etmek istiyorum, yani kullanıcı klavyeyle tarihi değiştirdiğinde, örneğin gün 31'den fazla veya ayın 12'den fazla girdiğinde bir hata vermesi gerekir. Bu isValidDate işlevini yazdım ancak iyi çalışmıyor. Tarih okuyanlar için valid() işlevinin bulunduğunu bir yerde okudum. datepicker valid() işlevi tarihin geçerli olup olmadığını kontrol etmek için

sen benim kodunda herhangi bir hata vermeyecektir gün bölümünde 44 eklerseniz

$(function() { 
 
    $(".date-picker").datepicker({ 
 
    dateFormat: 'dd/mm/yy' 
 
    }); 
 

 
    $(".date-picker").each(function() { 
 
    $(this).add($(this).next()).wrapAll('<div class="imageInputWrapper"></div>'); 
 
    }); 
 

 
    $('input:button').click(function(e) { 
 
    $("#fDate").removeClass("red"); 
 

 
    var fromDate = $("#fDate").val(); 
 

 
    if (!isValidDate(fromDate)) { 
 
     $("#fDate").addClass("red"); 
 
    } 
 

 
    if (errors) e.preventDefault(); 
 
    }); 
 

 
    function isValidDate(date) { 
 
    var matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(date); 
 
    if (matches == null) return false; 
 
    var d = matches[2]; 
 
    var m = matches[2]; 
 
    var y = matches[3]; 
 

 
    if (y > 2100 || y < 1900) return false; // accept only recent & not too far years 
 

 
    var composedDate = new Date(y, m, d); 
 
    return composedDate.getDate() == d && composedDate.getMonth() == m && composedDate.getFullYear() == y; 
 
    } 
 
});
.imageInputWrapper { 
 
    width: 172px; 
 
    border: solid 1px white; 
 
    background-color: white; 
 
    display: flex; 
 
    align-items: center; 
 
    box-shadow: 0 2px 2px 0 #C2C2C2; 
 
} 
 
.red { 
 
    box-shadow: 0px 0px 2px 2px red; 
 
}
<script src="https://code.jquery.com/jquery-1.9.1.js"></script> 
 
<script src="https://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> 
 
<form> 
 
    <input id="fDate" class="date-picker" type="text" name="fromDate" style="width: 130px; height: 41px; background-color: white; border: none; outline: none; margin-left:5px" /> 
 
    <img src="http://s9.postimg.org/nl2mcq2rv/calendar.png" id="fromDateImgId"> 
 
    <br/> 
 
    <input type="button" value="submit"> 
 
    </table> 
 
</form>

jsFiddle.

cevap

0

Doğrulama işleviniz için Date.parse() kullanabilirsiniz.

Örnek

function isValidDate(str) { 
    return !isNaN(Date.parse(str)); 
} 
+0

(bir numara olup olmadığını sorun kontrol etmek değil veya değil, ben bir sınır, günler ve aylar – reshad

+0

'Date.parse öteye gitmez istiyorum) 'Tarih dizgisinin geçerli olup olmadığını kontrol edecek, sadece sayısal kontrol için değil. 'Date.parse (" 44/04/2016 ") // -> NaN ' ' Date.parse ("01/04/2016") // -> 1451840400000' – hitamu

1

Kodunuz çalışıyor. Sadece biraz tweaks.

function isValidDate(date) { 
    var matches = /^(\d+)[-\/](\d+)[-\/](\d+)$/.exec(date); 
    if (matches == null) return false; 
    var d = matches[1]; 
    var m = matches[2]; 
    var y = matches[3]; 
    if (y > 2100 || y < 1900) return false; 
    var composedDate = new Date(y+'/'+m+'/'+d); 
    return composedDate.getDate() == d && composedDate.getMonth()+1 == m && composedDate.getFullYear() == y; 
    } 

Çalışma keman: https://jsfiddle.net/ppw1k3yu/1/

İlgili konular