- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 10:26 AM
Hi everyone!
I have a date field Due date (due_date) on a custom table. I need to prevent entering a date into this field that is prior to today. To achieve this I've created a client script and an accompanying script include. I believe I am close, anyone see why it's not working? thanks!
my onChange client script is:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//make sure they are not asking for a due date in the past (before now)
var ga = new GlideAjax("NowDateCalc"); //name of the called script include
ga.addParam("sysparm_name", "getNow"); //name of the function in the script include
ga.getXML(getDate); //callback function
}
function getDate(response) {
var due_date = g_form.getValue('due_date'); //due_date is the name of the field on the table
var rightNow = response.responseXML.documentElement.getAttribute("answer");
if (due_date < rightNow) {
alert("Due date cannot be earlier than today.");
g_form.setValue('due_date', '');
}
}
and my script include, "NowDateCalc" is:
var NowDateCalc = Class.create();
NowDateCalc.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getNow : function() {
return gs.now();
},
type: 'NowDateCalc'
});
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 11:06 AM
Hi,
You can simply do this with the help of UI Policy itself without much need of any script as shown below:
For example I have done this for Planned End Date on Change Request Table as shown below:
Result:
Post this Alert Message it will clear out the Field Value selected by the User also. Replace your Table Name and Field Name in the UI Policy shown above accordingly. This would work on click itself when the User selects the Date i.e. on Change of the field Value.
Hope this helps.Mark the answer as correct/helpful based on impact.
Regards,
Shloke
Regards,
Shloke

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 10:28 AM
Hi Patrick,
If you want a script-less way of doing this, consider a BEFORE business rule. You can do this in the condition builder
Start Date | at or before | Current minute
Then in the Actions section tell it to abort with a message.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 10:34 AM
You can try with below code..
if(g_form.getValue('end_date') !='' )
{
var dFormat = g_user_date_format;
var tFormat = g_user_date_time_format;
var end = getDateFromFormat(g_form.getValue('end_date'),dFormat);
var todayDate = formatDate(new Date(),dFormat);
var today = getDateFromFormat(formatDate(new Date(),dFormat),dFormat);
var sDate=getDateFromFormat(g_form.getValue('start_date'),dFormat);
if (today < end) {
alert(getMessage("Desired End Date has to be a date in the future"));
g_form.setValue('end_date','');
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 10:43 AM
small correction but its import.
if(g_form.getValue('end_date') !='' )
{
var dFormat = g_user_date_format;
var tFormat = g_user_date_time_format;
var end = getDateFromFormat(g_form.getValue('end_date'),dFormat);
var todayDate = formatDate(new Date(),dFormat);
var today = getDateFromFormat(formatDate(new Date(),dFormat),dFormat);
if (today > end) {
alert(getMessage("Desired End Date has to be a date in the future"));
g_form.setValue('end_date','');
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2017 10:52 AM
Hello Chuck, thanks and I tried a business rule, but ideally I want the user to be alerted before they save/update...business rule can't do that, correct?