2016-07-18 4 views
0

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

Ниже приведен сценарий;

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

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

ответ

0

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

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; - это строка и для выполнения вычислений на ней нужно разбирать строки.
  • Я использовал кнопку на клике, чтобы наконец отобразить значение результата и соответствующее значение рейтинга.

Проверьте этот код, если он работает на вас.

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

Смежные вопросы