「MediaWiki:Common.js」の版間の差分
提供: 小樽のじかん事典
編集の要約なし |
編集の要約なし |
||
| 1行目: | 1行目: | ||
/** | /** | ||
* アカウント作成画面のラベル強制書き換えおよびバリデーション | * アカウント作成画面のラベル強制書き換えおよびバリデーション | ||
* MediaWiki 1.44.3 対応版 | |||
*/ | */ | ||
(function() { | (function() { | ||
| 6行目: | 7行目: | ||
if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') { | if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') { | ||
var customizeAccountForm = function() { | var customizeAccountForm = function() { | ||
// 1. | // 1. メールアドレスのラベル変更(省略可能を削除) | ||
var emailLabel = $('label[for="wpEmail"]'); | // 複数のセレクタを用いて、確実に要素を特定します | ||
if (emailLabel.length) { | var $emailLabel = $('label[for="wpEmail"], #mw-createaccount-join-form label:contains("メールアドレス")'); | ||
emailLabel.text('メールアドレス'); | if ($emailLabel.length) { | ||
$emailLabel.text('メールアドレス'); | |||
} | } | ||
// 2. 本名のラベルを「HN(省略可能)」に変更 | // 2. 本名のラベルを「HN(省略可能)」に変更 | ||
var realNameLabel = $('label[for="wpRealName"]'); | var $realNameLabel = $('label[for="wpRealName"], #mw-createaccount-join-form label:contains("本名")'); | ||
if (realNameLabel.length) { | if ($realNameLabel.length) { | ||
realNameLabel.text('HN(省略可能)'); | $realNameLabel.text('HN(省略可能)'); | ||
} | } | ||
// 3. | // 3. メールアドレス入力をブラウザレベルで必須にする | ||
var emailInput = $('#wpEmail'); | var $emailInput = $('#wpEmail'); | ||
if (emailInput.length) { | if ($emailInput.length) { | ||
emailInput.attr('required', ' | $emailInput.prop('required', true); | ||
// HTML5のバリデーションを有効化 | |||
$emailInput.attr('aria-required', 'true'); | |||
} | |||
// 4. アカウント作成ボタンが押された際の最終チェック | |||
var $submitButton = $('#wpCreateaccount'); | |||
if ($submitButton.length) { | |||
$submitButton.on('click', function(e) { | |||
if ($emailInput.length && !$emailInput.val()) { | |||
alert('メールアドレスは必須項目です。'); | |||
$emailInput.focus(); | |||
e.preventDefault(); | |||
return false; | |||
} | |||
}); | |||
} | } | ||
}; | }; | ||
// | // DOMの構築を待って実行 | ||
customizeAccountForm(); | $(document).ready(function() { | ||
// | customizeAccountForm(); | ||
// 動的な変更を監視(MutationObserver) | |||
if (window.MutationObserver) { | |||
var observer = new MutationObserver(function() { | |||
customizeAccountForm(); | |||
}); | |||
observer.observe(document.body, { childList: true, subtree: true }); | |||
} | |||
}); | |||
// フォールバック:0.5秒後と2秒後にも実行 | |||
setTimeout(customizeAccountForm, 500); | setTimeout(customizeAccountForm, 500); | ||
setTimeout(customizeAccountForm, 2000); | |||
} | } | ||
})(); | })(); | ||
2025年12月27日 (土) 10:52時点における版
/**
* アカウント作成画面のラベル強制書き換えおよびバリデーション
* MediaWiki 1.44.3 対応版
*/
(function() {
// アカウント作成画面(Special:CreateAccount)でのみ実行
if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
var customizeAccountForm = function() {
// 1. メールアドレスのラベル変更(省略可能を削除)
// 複数のセレクタを用いて、確実に要素を特定します
var $emailLabel = $('label[for="wpEmail"], #mw-createaccount-join-form label:contains("メールアドレス")');
if ($emailLabel.length) {
$emailLabel.text('メールアドレス');
}
// 2. 本名のラベルを「HN(省略可能)」に変更
var $realNameLabel = $('label[for="wpRealName"], #mw-createaccount-join-form label:contains("本名")');
if ($realNameLabel.length) {
$realNameLabel.text('HN(省略可能)');
}
// 3. メールアドレス入力をブラウザレベルで必須にする
var $emailInput = $('#wpEmail');
if ($emailInput.length) {
$emailInput.prop('required', true);
// HTML5のバリデーションを有効化
$emailInput.attr('aria-required', 'true');
}
// 4. アカウント作成ボタンが押された際の最終チェック
var $submitButton = $('#wpCreateaccount');
if ($submitButton.length) {
$submitButton.on('click', function(e) {
if ($emailInput.length && !$emailInput.val()) {
alert('メールアドレスは必須項目です。');
$emailInput.focus();
e.preventDefault();
return false;
}
});
}
};
// DOMの構築を待って実行
$(document).ready(function() {
customizeAccountForm();
// 動的な変更を監視(MutationObserver)
if (window.MutationObserver) {
var observer = new MutationObserver(function() {
customizeAccountForm();
});
observer.observe(document.body, { childList: true, subtree: true });
}
});
// フォールバック:0.5秒後と2秒後にも実行
setTimeout(customizeAccountForm, 500);
setTimeout(customizeAccountForm, 2000);
}
})();