CRM 2011 +在javascript中使用两个选项集的问题

时间:2013-11-18 10:13:48

标签: javascript dynamics-crm-2011

您好我创建了一个小的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);

现在问题是

当我第一次点击“否”时页面加载,该函数不会被调用,但是当我点击“是”时,函数被调用,之后如果我点击“否”,该函数被调用

不明白什么是问题。任何人都会告诉我出了什么问题。

2 个答案:

答案 0 :(得分:0)

将函数放在事件Onchange上的特定字段(选项集)的表单属性上。只要值发生变化,它就会调用该函数。

答案 1 :(得分:0)

查看该代码之后的一些事情。

  1. 确保使用属性的逻辑名称引用所有JS属性对象(例如'new_attributename'或'mobilephone')。在您的代码中,您有以下属性调用,这些调用无效。 Xrm.Page.getAttribute("Specify Detail")Xrm.Page.getAttribute("HasSubmitted")

  2. 如果您要添加onChange事件,则应使用SDK中概述的attributeObj.addOnChange([function reference]),而不是document.EntityScript.IsCapableOfAssistInOwnDefense_OnChange

  3. 修改

    我能够让以下工作。在我的表单自定义中,我在脚本中添加了帐户表单,并添加了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事件或正确引用属性。属性名称必须全部小写才能生效。