我需要在页面加载的服务门户下的目录项中的文本字段添加占位符,我在目录客户端脚本中尝试使用jquery和angular / document但没有成功,并且发现它不支持任何其他备用soln?
目录客户端脚本:
function onLoad() {
var elm = angular.element(element.getElementsByClassName("form-control"));
//when I use angular I get this error:
js_includes_sp.jsx?v = 08-28-2017_0947& lp = Mon_Aug_28_11_44_06_PDT_2017& c = 2_42:63808(g_env)[脚本:执行]运行客户端脚本错误"占位符 脚本":TypeError:无法读取属性'元素' null。
jQuery("#sp_formfield_IO:5cdafd764f02030007b03fb28110c70b").attr("placeholder","hello world");
// if I use jquery or $jq I get below error
(g_env)[脚本:执行]运行客户端脚本"占位符时出错 脚本":TypeError:jQuery不是函数
}
这是在servicenow中生成html的方式:
<span ng-switch-default="true" class="ng-scope">
<!-- ngIf: !field.max_length || 256 > field.max_length -->
<input ng-model="field.stagedValue" ng-change="stagedValueChange()"
maxlength="" autocomplete="off" name="IO:5cdafd764f02030007b03fb28110c70b"
id="sp_formfield_IO:5cdafd764f02030007b03fb28110c70b" data-type="string"
placeholder="" ng-if="!field.max_length || 256 > field.max_length"
class="form-control ng-pristine ng-untouched ng-valid ng-scope ng-empty ng-
valid-maxlength" ng-model-options="{allowInvalid: true}" ng-
disabled="field.isReadonly()" aria-invalid="false"><!-- end ngIf:
!field.max_length || 256 > field.max_length --><!-- ngIf: field.max_length
>= 256 --></span>
答案 0 :(得分:0)
简短的回答是,在服务门户中没有可接受的方法。这是因为严格阻止了DOM操作。 但是,更长的答案是确实有一种方法可以在Service Portal中执行此操作。我写了一篇关于它的文章,你可以找到here。
您需要该帖子中的CatItemVariables脚本包含,它将目录变量转换为sys_ids。由于UI脚本不在服务门户上运行(即使是全局的脚本,我最后检查过),您还需要创建一个UI脚本并将其设置为JS Include,您将其包含在内。服务门户的主题。 (如何在帖子中详细说明。)
在UI脚本中,您将要使用REST请求和脚本包含来获取cat项变量。
可能还有一种更简单的方法:
使用此对象作为窗口的替换,并记住文档是的元素窗口:
this.document.getElementsByName(&#39; IO:&#39; + itemVars [&#39; var_name&#39;])[0];
在上文中, itemVars 是包含结果目录项变量对象的变量名,&#39; var_name&#39; 是变量名。
它并没有真正做到你正在寻找的东西,但你也可以考虑&#34;占位符文本&#34;字段字典本身的字典字段。
答案 1 :(得分:-1)