Contact-Form を正しく機能させるために数時間試行しています。フォーム自体にはいくつかのタブがあります。私が使用しているタブのコードは、このサイトhttp://jqueryfordesigners.com/jquery-tabs/からのものです
これは私が使用しているスクリプトコードです:
<script type="text/javascript" charset="utf-8">
$(function () {
var tabContainers = $('div.tabs > div');
tabContainers.hide().filter(':first').show();
$('div.tabs ul.tabNavigation a').click(function () {
tabContainers.hide();
tabContainers.filter(this.hash).show();
$('div.tabs ul.tabNavigation a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(':first').click();
});
</script>
これはこれまでのところうまくいきます。タブは希望どおりに正しく表示されています。Modx Revo の FormIt-Package で作成したフォームも機能します。
ここで問題が発生しました...送信をクリックして検証に失敗すると (ユーザーが必須フィールドへの入力を忘れたなど)、サイトが更新され、最後に選択したタブが表示されず、ページには常に最初のタブが表示されます。
検証エラー - >ページのリロードで最後にアクセスしたタブを表示したい。
この編集により、URL のハッシュタグ (タブの ID) を介して目的のタブを開くことができます (例: www.xyz.com/contact.html?tab=#two):
<script type="text/javascript" charset="utf-8">
$(function () {
var tabContainers = $('div.tabs > div');
tabContainers.hide().filter(':first').show();
$('div.tabs ul.tabNavigation a').click(function () {
tabContainers.hide();
tabContainers.filter(this.hash).show();
$('div.tabs ul.tabNavigation a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(':first').click();
$(document).ready(function(){
tabContainers.hide();
tabContainers.filter(window.location.hash).show();
$('div.tabs ul.tabNavigation a').removeClass('selected');
$(this).addClass('selected');
return false;
});
上記の URL でサイトに入ると、必要に応じて 2 番目のタブを表示できます。
最後にフォームを送信したときに必須フィールドが欠落していると、ページがリロードされてエラーが表示されます。ただし、最後に表示されたタブは開かれず、URL のハッシュタグが「失われる」ため、どのタブも開かれません。
最後にアクセスした/選択したタブがページの再読み込み/更新時に表示されるようにするにはどうすればよいですか?
最初のスクリプト コードの 10 行目と 12 行目の間にあるこのコードを使用して、タブの ID を URL に追加しようとしました。
location.hash = this.pathname.substring(3) + this.hash;
これには、タブをクリックすることで ID がハッシュタグとして URL に追加されるという効果があります。しかし、フォームを送信すると、URL はハッシュタグを「失い」、ページを更新します。ページの読み込み時に、URL が www.xyz.com/contact.html#one に変更されます。www.xyz.com/contact.html#two や www.xyz.com/contact.html#three のように入力しようとすると、URL は常に www.xyz.com/contact.html#one に戻ります。
どんなヒントでも大歓迎です!前もって感謝します!