Unable to change my Date filed using javascript inside my Edit form
-
15-01-2021 - |
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?
Solution
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'));