2014-03-25 59 views
0

我最近爲使用JQuery步驟的客戶端構建了一個殯葬費用計算器工具。JQuery步驟 - 計算步數(因爲它們動態變化),以便我可以在特定點插入/刪除

該工具的表單非常複雜,因爲許多步驟取決於是否選擇了某些表單選項。

我設法通過使用「insert」和「remove」方法觸發單選按鈕的「onchange」來適應這種情況。當用戶選擇發生死亡時,共有7個步驟。當用戶選擇發生死亡時,不發生,共有5個步驟(請參見附圖)。 (參見下面的一些示例代碼)被插入,並在索引4除去

No death occurred (screenshot)

Death Occurred (screenshot)

的步驟如果用戶切換來回的選項之間,它將插入2,則刪除2,插入2,然後刪除2等。我發現這很簡單。

進一步進入我需要應用類似條件的表單時出現問題。但是,我發現我無法專門針對要插入或刪除的索引,因爲我無法預測此時有多少步(因爲它基於用戶以前的選擇 - 請參閱上文)。

我的JavaScript知識有限,所以我很茫然。我知道讓它工作的邏輯,我只是​​不知道如何實現它。

我想知道如何使用javascript/jquery來統計步數(爲了定位最後一步)並且定位當前步驟。當然,除非有人可以提出更簡單或更好的方法。

我一直在絞盡腦汁,任何幫助,將不勝感激。謝謝!

<input type="radio" name="deathOccurred" rel="death-occured-yes" value="Yes" class="required" onclick="calculateTotal()" onchange="$('#estimator-form').steps('insert', 4, { 
    title: 'Clergy/Celebrant', 
    content: '<STEP HTML HERE>' 
}); 
$('#estimator-form').steps('insert', 5, { 
title: 'Other options', 
content: '<STEP HTML HERE>' 
/> Yes &nbsp;&nbsp; 
<input type="radio" name="deathOccurred" rel="death-occured-no" value="No" checked onclick="calculateTotal()" onchange="$('#estimator-form').steps('remove', 5, {}); $('#estimator-form').steps('remove', 4, {});" /> No 

回答

0

如果this是您正在使用的插件,它似乎並不有一種方法大小,或長度如你所願。也許你可以通過使用jquery來計算自己,並計算例如h1個元素的數量。

var wizardLength = $("#estimator-form").find('h1').length; 

所以,如果您使用方法'添加'而不是插入,我想它會被追加到最後。當你想刪除最後一個,你可以使用'刪除'與索引= wizardLength - 1.

-2

我將此功能添加到jquery.steps.js,因爲我動態創建步驟,我需要獲得步驟統計我的整個我應用程序。以下是你需要添加到文件怎麼能夠得到在嚮導中的總步:

在jquery.steps(約1360行)添加以下代碼:

$.fn.steps.numberSteps = function (step) 
{ 
    var state = getState(this); 
    return state.stepCount; 
}; 

在HTML頁面的jQuery代碼,我聲明我的嚮導是這樣的:

var wizard = form.children("div").steps({ 
     headerTag: "h3", 
     bodyTag: "section", 
     transitionEffect: "fade", 
     stepsOrientation: "vertical", 
     contentMode: 2, 
     saveState: true, 
     startIndex: 0, 
     .... 

然後使用這個調用來獲取步數:

var lastWizardStep = wizard.steps("numberSteps"); 
相關問題