Question

I am working on a sharepoint 2013 on-premises team site. now i want to set a column which is of type date/time to be equal to today date,so i added a script inside the Edit form, then i tried to set the date value using SPUtiltiy, as follow:-

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd = '0'+dd
} 

if(mm<10) {
    mm = '0'+mm
} 

today = dd + '/' + mm + '/' + yyyy;
alert(today);
SPUtility.GetSPFieldByInternalName('OrderDateCustomerApproved_').SetValue(today);

but i got this error:-

Unable to set date, invalid arguments (requires year, month, and day as integers).

throw "Unable to set date, invalid arguments (requires year, month, and day as integers).";

so i tried to do so using pure JavaScript appraoch as follow:-

$('select[id^="OrderDateCustomerApproved_"]').val(today);

where this did not raise any error, but the field was not populated with today date!!

so can anyone adivce on this please?

enter image description here

Was it helpful?

Solution

My data column is: enter image description here

A demo code based on my data column for your reference:

<script src="http://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    var today = new Date();   
    var dd = today.getDate();   
    var mm = today.getMonth() + 1;   
    var yyyy = today.getYear();   
    if(dd<10) {
    dd = '0'+dd
    } 

    if(mm<10) {
    mm = '0'+mm
    } 

    today = dd + '/' + mm + '/' + yyyy; 
    $("input[id^='Date_x0020_Customer_x0020_Approv_']").val(today);
})
</script>

Note: you need to change id in the above code to yours.

OTHER TIPS

I use the following piece of code to set value to Date-time field with SPUtility and jQuery

var currentDate = new Date();
$(SPUtility.GetSPFieldByInternalName(internalFieldName).Controls).find('input').first().val((currentDate.getMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getFullYear());

My Site collection uses MM/DD/YYYY format for dates so i'm setting it in that format. You will have to change the format if needed.

I was working on something similar last week. Maybe this will point you in the right direction.

<script>
'use strict';
(function() {

    var timeSinceFieldViewCtx = {};

    timeSinceFieldViewCtx.Templates = {};
    timeSinceFieldViewCtx.Templates.Fields = {

        "Time": {  /* Change to your Date Column - Same as below */ 
            "View": timeSinceFieldViewTemplate
        }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(timeSinceFieldViewCtx);
})();

function timeSinceFieldViewTemplate(ctx) {
    var dateDiff = new Date() - new Date(ctx.CurrentItem.Time); /* Change to your Date Column */ 
    var daysDiff = Math.floor(dateDiff / 1000 / 60 / 60 / 24);
    return daysDiff;
}
window.addEventListener('DOMContentLoaded', function() {

    var x = document.getElementsByClassName('ms-vb-lastCell');

    for( var i =0; i < x.length; ++i ) {

        console.log(x[i].innerText + " Type Of: " + typeof Number(x[i].innerText));

        if (Number(x[i].innerText) > 30 ) { 
            x[i].style.color = 'green';
            x[i].style.fontWeight='normal';
        }
        if (Number(x[i].innerText) > 60 ) { 
            x[i].style.color = 'green';
            x[i].style.fontWeight= 'bold';
        }
    }

}, true);
</script>

SharePoint adds a format function to a date object, so you can use that to do your formatting as well. And I don't used the ID of the field, I use the title because that makes things easier to read.

$("input[title='Date Customer Approved']").val(today.format('MM/dd/yyyy'));
Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top