Невозможно добавить значения выпадающих полей

javascript

60 просмотра

1 ответ

1 Репутация автора

Я пытаюсь получить среднее значение из нескольких раскрывающихся полей, чтобы сгенерировать рейтинг клиентов для опроса клиентов. Я построил этот опрос с использованием ProcessMaker, но я не могу заставить работать код javacript. Сценарий выполняет только последний оператор else и отображает «Нет рейтинга»

Ниже сценарий;

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);}

Пожалуйста помогите...

Автор: Tpeazy1 Источник Размещён: 18.07.2016 03:10

Ответы (1)


0 плюса

21 Репутация автора

Вам придется обновить свой код, чтобы он работал. Вы можете сослаться на следующий код:

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;

Я исправил различные проблемы в вашем коде, из-за которых код не работал.

  • При использовании onchange: он должен использоваться на объекте, а не на значении
  • Когда вы выполняете свой код при загрузке Dynaform, он тут же принимает значения переменных и никогда не получает обновленные значения при изменении. Таким образом, вам нужно вызывать функцию, которая получает значения переменной каждый раз, когда вам нужно вычислить RatingVal.
  • Значения мы получаем из переменных используя функцию getField (""). Value; является строкой, и для выполнения вычислений ее необходимо проанализировать в строки.
  • Я использовал кнопку при нажатии, чтобы наконец отобразить значение результата и соответствующее значение рейтинга.

Пожалуйста, проверьте код, если он работает для вас.

Надеюсь это поможет

Автор: Mishika Размещён: 16.05.2017 12:07
Вопросы из категории :
32x32