お世話になっております。
表題の件ですが、ステップフォームの 一部の画面 において、「次へ」ボタンの文言を変更したいです。
おそらくformbridgeの仕様で、ステップフォーム内の「次へ」ボタンは全て同じクラスになっていると思うのですが、ステップフォーム内で「次へ」ボタンを区別することはできるのでしょうか。
区別ができれば、それぞれ文言の変更を適用できるのですが、、、
ご教示よろしくお願いいたします。
お世話になっております。
表題の件ですが、ステップフォームの 一部の画面 において、「次へ」ボタンの文言を変更したいです。
おそらくformbridgeの仕様で、ステップフォーム内の「次へ」ボタンは全て同じクラスになっていると思うのですが、ステップフォーム内で「次へ」ボタンを区別することはできるのでしょうか。
区別ができれば、それぞれ文言の変更を適用できるのですが、、、
ご教示よろしくお願いいたします。
sdvxdartsさん
こんにちは。
JavaScriptであれば可能です。
MutationObserverを使い、現在のステップを監視しながら、ボタンの表示を変える方法です。
(function() {
'use strict';
fb.events.form.mounted = [function(state) {
// ステップ1を変更する場合
if (document.getElementsByClassName('ui stackable grid')[0].getAttribute('active') == 0) {
document.getElementsByClassName('fb-next')[0].innerHTML = document.getElementsByClassName('fb-next')[0].innerHTML.replace(document.getElementsByClassName('fb-next')[0].innerText, '次だ');
}
// ステップ上部バーの要素を監視(ステップの移動があれば処理が走る)
const target = document.getElementsByClassName('el-steps el-steps--horizontal')[0];
// ノードに変化があれば実行
const observer = new MutationObserver(function() {
const el = document.getElementsByClassName('fb-next');
if (el.length > 0) {
switch (document.getElementsByClassName('ui stackable grid')[0].getAttribute('active')) {
// ステップ番号-1になる点に注意
// ステップ1
case '0':
document.getElementsByClassName('fb-next')[0].innerHTML = document.getElementsByClassName('fb-next')[0].innerHTML.replace(document.getElementsByClassName('fb-next')[0].innerText, '次だ');
break;
// ステップ2
case '1':
document.getElementsByClassName('fb-next')[0].innerHTML = document.getElementsByClassName('fb-next')[0].innerHTML.replace(document.getElementsByClassName('fb-next')[0].innerText, '次よ');
break;
// 以下必要に応じてステップを増やす
}
}
});
const config = { childList: true, subtree: true }; // 監視を指定するオプション
observer.observe(target, config); // 監視開始
}];
})();
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。