2017-05-09 50 views
0

我想嘗試研究如何實現這一點,但我不確定如何爲此制定解決方案。如何使用jQuery根據表單上選定的選項累積評分/值

基本上我有一個包含一些選擇列表,單選按鈕和複選框的表單。表單上的每個選項都有一個相應的數值,當表單被提交時,這些數值將被累積並顯示給用戶。

我不確定如何能夠添加或減少值,如果用戶選擇更改窗體上的選擇。

例如,當用戶在第一個下拉元素上,並且他們選擇了值爲5的選項2,那麼當前的累加值爲us 5.然後在問題2中,他們選擇了選項1,其值爲2,其累加值爲7.然後,用戶將選項2中的問題1的答案更改爲選項1,這意味着將從累計值中扣除5,並且將添加2,因爲它是用於改變累積值的選項1的值值爲4.

我知道我提到的描述可能遍佈整個地方,但我希望它是有道理的。

我試圖使用jQuery,到目前爲止,我的方法是檢查是否有任何形式的元素的值發生了變化:

(function($) { 
    var score = 0; 
    $(".the-form #step-5 :input").change(function() { 
     console.log($(this).val()); 
    }); 
})(jQuery); 

但我似乎無法弄清楚如何獲得如果用戶更改其答案,則選擇此選項的先前值。

任何建議,將不勝感激。

+0

唐」的改變事件t加分直到用戶點擊提交。如果它是一個表單,您將爲提交事件添加一個事件偵聽器。在jQuery中,它看起來像:$(「.the-form」).submit(function(event){})',在Javascript中它可能看起來像這樣:'form.onsubmit = function(event){}'' form.addEventListener('submit',function(event){})'。在JS中獲取類似'var form = document.querySelector(「。the-form」)''的元素。 – illiteratecoder

回答

0

每當用戶更改任何元素時,是否可以重新計算整個表單?

$(".the-form :input").change(calculateChanges); 

function calculateChanges() { 
    // Retrieve the current values of all elements and add them together 
} 
0

當用戶提交時,然後開始進行計算或選擇被更改,即將其附加到事件。目前比分是一個局部變量

function calcValue() { 
    var score = 0; 

    //select all the elements using example below 
    $(".the-form :input").each(function(index) { 
    //i forgot jQuery exact syntax but $(this).val or //$(this).val() 
     score += $(this).val(); 
    }); 
    console.log(score); 
} 

在這種情況下,你可以將它連接到提交

function submit() { 
    var score = calcValue(); 
} 

或者你可以把它放在一個選擇

function selectChanged() { 
    var score = calcValue(); 
} 
相關問題