【问题标题】:How to add placeholder to text-field in servicenow service portal?如何在 servicenow 服务门户中的文本字段中添加占位符?
【发布时间】:2017-10-31 07:19:00
【问题描述】:

我需要在页面加载时在服务门户下的目录项中的文本字段中添加占位符,我尝试在目录客户端脚本中使用 jquery 和 angular/document 但没有成功,发现它不支持任何其他替代解决方案?

目录客户端脚本:

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) [SCRIPT:EXEC] 运行客户端脚本“Placeholder”时出错 Script": TypeError: Cannot read property 'element' of null.

 jQuery("#sp_formfield_IO:5cdafd764f02030007b03fb28110c70b").attr("placeholder","hello world");

   // if I use jquery or $jq I get below error

(g_env) [SCRIPT:EXEC] 运行客户端脚本“Placeholder”时出错 Script": TypeError: jQuery is not a function

}

这是在 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>

【问题讨论】:

    标签: javascript jquery angularjs servicenow


    【解决方案1】:

    喂,

    简短的回答是,在服务门户中没有可接受的方法来执行此操作。这是因为 DOM 操作被严格阻止。 然而,更长的答案是在服务门户中确实有一种方法可以做到这一点。我写了一篇关于它的文章,你可以找到here

    您需要该帖子中的 CatItemVariables Script Include,它将目录变量转换为 sys_ids。由于 UI 脚本不在服务门户上运行(即使是全局脚本,我上次检查过),您还需要创建一个 UI 脚本并将其设置为 JS 包含,您将其作为服务主题的一部分包含在内门户网站。 (如何做到这一点在帖子中有详细说明。)

    在 UI 脚本中,您需要使用 REST 请求和该脚本包含来获取猫项变量。


    可能还有更简单的方法:

    1. 设置文章中提到的脚本包含。
    2. 在 onLoad 客户端脚本中,使用 Script Include 获取与目录项关联的所有变量的 sys_ID,方法是使用 GlideAjax 调用客户端可调用的 Script Include。
    3. 使用 this 对象作为 window 的替代对象,并记住 documentwindow 的一个元素强>:

      this.document.getElementsByName('IO:' + itemVars['var_name'])[0];

    在上面,itemVars 是包含生成的目录项变量对象的变量名,'var_name' 是变量名。

    它并不能真正满足您的需求,但您也可以考虑字段字典本身上的“占位符文本”字典字段。

    【讨论】:

      【解决方案2】:

      如果您只想为 变量 填充 placeholder 而无需动态设置,您可以使用 示例文本 字段在变量本身中。

      这将在表单中填充为placeholder

      【讨论】:

      • 我需要动态设置占位符
      • 您选择的字段类型是什么,我找不到示例文本
      • 在我的例子中它是一个单行文本变量
      • 我的回答为您提供了唯一可行的方法。
      猜你喜欢
      • 2016-05-30
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 2020-07-04
      相关资源
      最近更新 更多