- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 08:56 AM
hey everyone,
i have a widget with sn-record-picker.
1. i want on onchange to make the field read-only. i know that : sn-disabled="true" needs to make the field readonly. but i need it only if there is a value.
2. i want to pass the selected value from my widget to catalog item.
this is my widget code:
HTML:
<div>
<sn-record-picker field="c.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
sn-disabled="true"
page-size="100" ></sn-record-picker>
</div>
var gr = new GlideRecord('ast_contract');
var sys_id = $sp.getParameter('sys_id');
gr.get(sys_id);
data.number = gr.getDisplayValue('number');
data.sys_id = gr.getDisplayValue('sys_id');
})();
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};
c.onchange = function() {
if (c.data.number) {
c.data.disable = true;
}
}
// var display_id = $location.search().sys_id;
// $scope.$on("field.change", function(evt, parms) {
// localStorage.setItem("contract3", parms.newValue);
// if (parms.field.number == 'contract')
// changePage(parms.newValue);
// });
// function changePage(p) {
// var path = $location.path();
// var searchParms = $location.search();
// $location.url(path + '?id=' + searchParms.id + '&table=ast_contract&sys_id=' + p);
// }
}
Solved! Go to Solution.
- Labels:
-
Service Portal Development
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 11:34 AM
i found an answer bymyself:
<div>
<sn-record-picker field="data.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
page-size="100"
sn-disabled="data.disabled"
>
</sn-record-picker>
</div>
function($scope, $location) {
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};
$scope.$watch(function() {
$scope.$on("field.change", function(evt, parms) {
if (parms.field.name != '') {
c.data.disabled = true;
}
})
})
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 09:04 AM
try changing HTML sn-disabled="data.disabled"
and add
data.disabled = false;
on 1st line of server script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 09:06 AM
changed, nothing
can you do screen sharing with me?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 11:34 AM
i found an answer bymyself:
<div>
<sn-record-picker field="data.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
page-size="100"
sn-disabled="data.disabled"
>
</sn-record-picker>
</div>
function($scope, $location) {
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};
$scope.$watch(function() {
$scope.$on("field.change", function(evt, parms) {
if (parms.field.name != '') {
c.data.disabled = true;
}
})
})
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-10-2020 05:02 PM
Great!
Got busy at work so didn't got chance to reply you.