简体   繁体   English

无法添加下拉字段的值

[英]Unable to add values of dropdown fields

I am trying to get an average of the values of a number of dropdown fields to generate the customer rating for a customer survey. 我正在尝试获取多个下拉字段的平均值,以生成客户调查的客户评分。 I built this survey using ProcessMaker but I can't seem to get the javacript code to work. 我使用ProcessMaker进行了此调查,但似乎无法使javacript代码正常工作。 The script only executes the last else statement and displays "No Rating Available" 该脚本仅执行最后的else语句,并显示“无可用等级”

Below is the script; 下面是脚本;

var A = getField("Service_Delivery").value;
var B = getField("OnTime_Delivery").value;
var C = getField("Feedback").value;
var D = getField("Resolution").value;
var E = getField("Repeat_Findings").value;
var F = getField("Attitude").value;
//var SumTotal = A + B + C + D + E + F;
//var RatingVal = SumTotal/6;
var RatingVal;
var Result = getField("Result").value;
Result = RatingVal;
for (i=0; i<=5; i++){
A.onchange = function() { 
  RatingVal = (A + B + C + D + E + F )/6;
  Result.value = RatingVal;
};
B.onchange = function() {
  RatingVal = (A+ B+ C + D+ E + F)/6;
  Result = RatingVal;
};
C.onchange = function() {
  RatingVal = (A + B + C + D + E + F)/6;
  Result = RatingVal;
};
D.onchange = function() {
  RatingVal = (A + B + C + D + E + F)/6;
  Result = RatingVal;
};
E.onchange = function() {
  RatingVal = (A + B + C + D + E + F)/6;
  Result = RatingVal;
};
F.onchange = function() {
  RatingVal = (A + B + C + D + E + F)/6;
  Result = RatingVal;
};
}
//Result = changeValue("Result", RatingVal);
if (getField("Result").value==1) {
    getField("Rating").value= "Service Not Rendered";
    var show1= getField("Rating").value;
    alert(show1);}
else if (getField("Result").value==2) {
  getField("Rating").value="Unsatisfactory";
  var show2= getField("Rating").value;
    alert(show2);}
else if (getField("Result").value==3){
  getField("Rating").value="Satisfactory";
  var show3= getField("Rating").value;
    alert(show3);}
else if (getField("Result").value==4){
  getField("Rating").value="Very Good";
var show4= getField("Rating").value;
    alert(show4);}
else if (getField("Result").value==5){
  getField("Rating").value="Excellent";
var show5= getField("Rating").value;
    alert(show5);}
else{
  getField("Rating").value="No Rating Available";
var show6= getField("Rating").value;
    alert(show6);}

Please assist... 请协助...

You will have to update your code to make it work. 您将必须更新代码才能使其正常工作。 You can refer the following code: 您可以参考以下代码:

var RatingVal;
for (i=0; i<=5; i++){
  getField("Service_Delivery").onchange = function() {  
  getval();  
  };
  getField("OnTime_Delivery").onchange = function() {
 getval();     
  };
  getField("Feedback").onchange = function() {
  getval();    
  };
  getField("Resolution").onchange = function() {
  getval();    
  };
  getField("Repeat_Findings").onchange = function() {
 getval();     
  };
  getField("Attitude").onchange = function() {  
   getval();   
  };
}

function getval(){
var A = parseInt(getField("Service_Delivery").value);
var B = parseInt(getField("OnTime_Delivery").value);
var C = parseInt(getField("Feedback").value);
var D = parseInt(getField("Resolution").value);
var E = parseInt(getField("Repeat_Findings").value);
var F = parseInt(getField("Attitude").value);
  var r = (A + B + C + D + E + F)/6;   
  RatingVal = parseInt(r);
  }

function displayResult(){
  changeValue("Result", RatingVal);
if (getField("Result").value==1) {     
  getField("Rating").value= "Service Not Rendered";     
  var show1= getField("Rating").value;     
  alert(show1);
}
else if (getField("Result").value==2) {   
  getField("Rating").value="Unsatisfactory";   
  var show2= getField("Rating").value;     
  alert(show2);
}
else if (getField("Result").value==3){   
  getField("Rating").value="Satisfactory";   
  var show3= getField("Rating").value;     
  alert(show3);
}
else if (getField("Result").value==4){   
  getField("Rating").value="Very Good";
  var show4= getField("Rating").value;     
  alert(show4);
}
else if (getField("Result").value==5){   
  getField("Rating").value="Excellent";
  var show5= getField("Rating").value;     
  alert(show5);
}
else{   
  getField("Rating").value="No Rating Available";
  var show6= getField("Rating").value;     
  alert(show6);
}
  }
getField("display").onclick = displayResult;

I have corrected the various issues in your code due to which the code was not working. 我已更正了您的代码中的各种问题,由于这些问题,代码无法正常工作。

  • When using onchange: it has to be used on an object and not the value 使用onchange时:必须在对象上使用,而不是值
  • As you are running your code when the Dynaform loads, it takes up the values of variables then and there and never gets the updated values on change. 当Dynaform加载时,在运行代码时,它将占据变量的值,并且在那里并且永远不会获得更改后的更新值。 Thus, you need to call the function which gets the values of the variable every time you need to calculate RatingVal. 因此,您需要在每次需要计算RatingVal时调用获取变量值的函数。
  • The values we get from variables using the function getField("").value; 我们使用函数getField(“”)。value;从变量获取的值; is a string and to perform calculations on it, they need to be parsed to strings. 是一个字符串,要对其执行计算,需要将它们解析为字符串。
  • I have used a button on click to finally display the value of Result and the corresponding value of Rating. 我使用了单击按钮,以最终显示Result的值和相应的Rating的值。

Please check the code if it works for you. 请检查代码是否适合您。

Hope this helps 希望这可以帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM