您好我创建了一个小的javascript功能,在加载时,单选按钮(双 - 选项集)都设置为空,当我单击“是”或“否”时,需要一个字段。
这是代码 -
document.EntityScript.IsCapableOfAssistInOwnDefense_OnChange = function (context) {
if (Xrm.Page.getAttribute("new_HasSubmitted").getValue()) != null) {
var field = Xrm.Page.getAttribute("new_SpecifyDetail");
field.setRequiredLevel("required");
}
else
var field = Xrm.Page.getAttribute("new_SpecifyDetail");
field.setRequiredLevel("none");
}
在加载时我写了这个 -
Xrm.Page.getAttribute("new_HasSubmitted").setValue(null);
现在问题是
当我第一次点击“否”时页面加载,该函数不会被调用,但是当我点击“是”时,函数被调用,之后如果我点击“否”,该函数被调用
不明白什么是问题。任何人都会告诉我出了什么问题。
答案 0 :(得分:0)
将函数放在事件Onchange上的特定字段(选项集)的表单属性上。只要值发生变化,它就会调用该函数。
答案 1 :(得分:0)
查看该代码之后的一些事情。
确保使用属性的逻辑名称引用所有JS属性对象(例如'new_attributename'或'mobilephone')。在您的代码中,您有以下属性调用,这些调用无效。 Xrm.Page.getAttribute("Specify Detail")
,Xrm.Page.getAttribute("HasSubmitted")
如果您要添加onChange事件,则应使用SDK中概述的attributeObj.addOnChange([function reference])
,而不是document.EntityScript.IsCapableOfAssistInOwnDefense_OnChange
修改强> 的
我能够让以下工作。在我的表单自定义中,我在脚本中添加了帐户表单,并添加了requireField
作为onload函数,参数为"donotemail", "emailaddress1"
。
function requireField(fieldName, fieldToRquire){
var field = Xrm.Page.getAttribute(fieldName);
var fieldToRequire = Xrm.Page.getAttribute(fieldToRquire);
if (!field){
alert(field + " does not exist");
return false;
}
if (!fieldToRequire){
alert(fieldToRquire + " does not exist");
return false;
}
field.setValue(null);
field.addOnChange(function onChange(){
if (field.getValue() != null) {
fieldToRequire.setRequiredLevel("required");
}
else{
fieldToRequire.setRequiredLevel("none");
}
});
}
根据您修改的新代码,仍然存在上面列出的问题。您仍然没有正确添加onchange事件或正确引用属性。属性名称必须全部小写才能生效。