1 回答

TA貢獻1788條經驗 獲得超4個贊
一個解決方案可能是設置一個默認隱藏的提交按鈕(在第一個選項卡上),并在轉到第二個選項卡時顯示(如果添加更多選項卡,則顯示最后一個選項卡)。這樣您就不必更改innerHTML任何元素,只需切換一個類即可。類似的東西可能看起來像:
<form id="regForm" name="regForm" action="[NEED ACTION]" class="col-sm-6">
...
<div style="overflow:auto;">
<div style="float:right;">
<button type="button" id="prevBtn" click="nextPrev(-1)">Previous</button>
<button type="button" id="nextBtn" onclick="nextPrev(1)">Next</button>
<submit type="submit" class="hide" value="Submit" />
</div>
</div>
</form>
function showTab(n) {
var x = document.getElementsByClassName("tab");
x[n].style.display = "block";
if (n == 0) {
document.getElementById("prevBtn").style.display = "none";
} else {
document.getElementById("prevBtn").style.display = "inline";
}
if (n == (x.length - 1)) {
document.getElementById("nextBtn").classList.add('hide');
document.getElementById("submitBtn").classList.remove('hide');
} else {
document.getElementById("nextBtn").classList.remove('hide');
document.getElementById("submitBtn").classList.add('hide');
}
fixStepIndicator(n)
}
為此,您需要填寫action表格的屬性。
在不添加額外元素的情況下執行此操作的另一種方法是更改onClick下一步/提交按鈕的操作。
function showTab(n) {
var x = document.getElementsByClassName("tab");
var nextSubmitBtn = document.getElementById("nextBtn");
x[n].style.display = "block";
if (n == 0) {
document.getElementById("prevBtn").style.display = "none";
} else {
document.getElementById("prevBtn").style.display = "inline";
}
if (n == (x.length - 1)) {
nextSubmitBtn.textContent = "Submit";
nextSubmitBtn.onClick = someSubmitFunc;
} else {
nextSubmitBtn.textContent = "Next";
nextSubmitBtn.onClick = function () { nextPrev(1); };
}
fixStepIndicator(n)
}
這將允許您保留相同的 HTML 并通過 JS 處理解決方案。如果您這樣做,請記住將當前屬性保留onClick在“下一步”按鈕上,因為這將是運行的初始函數(當您第一次單擊“下一步”時)
一些提示和注意事項:
如果您僅更改元素的文本(例如從“next”到“submit”),最好使用僅更改文本的函數:
// Pure JS
element.textContnet = 'some text';
// jQuery
$element.text('some other text');
這將有助于防止可能來自innerHTML.
你說你正在使用 jQuery,但它只在所提供的 JS 代碼中的一行中使用。如果這是唯一使用 jQuery 庫的行,您可以輕松替換它,并且不包含該庫,從而節省網站大小。
// jQuery way to add class (line 111)
$("#sdate").addClass("invalid");
// Pure JS equivalent
document.getElementById('sdate').classList.add('invalid');
兩者都可以完成工作(添加一個類),如果您更喜歡使用 jQuery,但如果這是您唯一使用它的地方,那么這可能是一個替代方案。
添加回答
舉報