【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう

sakuyan > 【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう @ 2016/2/22 13:59
お世話になっております。
原因が分からず悩んでいます、どうかお力添えくださいませ

トップページのような、複数のページを合体させたページにメールフォーム設置したとき、
「入力内容を確認する」にdisabledが付加されてしまい、クリックすることが出来なくなってしまっています。
それぞれの固有ページ(/basercms/contact)などで確認した場合は、問題なくクリックできています。

下記ページで似たような現象が報告されておりますが、
こちらの状況はuchibaさんの言うjavascriptによってdisabledが付加されたものかと思っています。
[参考にさせて頂いたページ]
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=2012&forum=3#forumpost7488

ボタンがクリックできなくなるまでに行ったことは、
1.メールフォームを二つに増やした。(一つは別の固定ページの下部に追加→新しいレイアウトファイル(.php)を作成し、お問い合わせフォームではない固定ページの下に表示している状態)
2.default.phpをいじって、トップページに表示するページの数を減らした&表示するページのurlを変更した。
3.ページ上部のスライドショーを削除した。

現在、indexにある方も、別の固定ページの下部に追加したほうも、同じ状態となっております。
原因と対応策についてご教授頂ければ幸いです

[該当ボタンのソース]
<input class="btn-orange button form-submit" id="BtnMessageConfirm" type="submit" value=" 入力内容を確認する " disabled="disabled">


[default.phpの該当箇所のソース]
<script type="text/javascript">
     $(function(){
          $.get($("#BaseUrl").html() + '/contact/index', function(result){
               $("#MailForm").html(result);
          });
     });
</script>
<div id="BaseUrl" style="display:none"><?php echo $this->base ?></div>
<div id="MailForm"></div>


追加情報として、お問い合わせのindexが生成された時のレスポンスの中に、以下の記述があることを確認しました。
恐らくこいつのせいだろうとは思うのですが、どこからこいつが生成されるのかが分かっておりません。

<script type="text/javascript">
$(document).ready(function(){
$('input[type="submit"]').attr('disabled', 'disabled');
});
$(window).unload(function(){});
$(window).load(function(){
var getTokenUrl = '/basercms/contact2/ajax_get_token';
$.ajaxSetup({cache: false});
$.get(getTokenUrl, function(result) {
$('input[name="data[_Token][key]"]').val(result);
$('input[type="submit"]').removeAttr('disabled');
});
});
</script>


■ BaserCMSのバージョン:3.0.9
■ レンタルサーバー名:さくらレンタルサーバー ライト
■ スマートURLの利用: OFF
■ 設置フォルダ:ドキュメントルート/basecms/
■ 利用しているデータベース:SQLite
■ PHPスキル(自己評価):E
goichi > Re: 【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう @ 2016/2/22 22:20
メールフォームを出力する記述は間違っていないように思います。原因を探るために、切り分けを行ったほうが良いかも知れません。
例えば、他のテーマ(スケルトンとか)を適用した場合、どうなりますか?

sakuyan > Re: 【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう @ 2016/2/23 10:18
ご返信ありがとうございます。
スケルトンで試してみましたが、同じようにdisabledになってしまっています。
スケルトンでも同じように問い合わせの個別ページの場合は問題なく使用できました。
goichi > Re: 【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう @ 2016/2/24 22:18
3.0.9のm-singleをローカル環境に構築して試しましたが、掲示して頂いている方法(メールフォームを固定ページに表示させる記述)で正常にメールフォームが表示されました。

となると、サーバー環境の問題か、ブラウザの問題かという感じではないでしょうか。一度、お使いのブラウザ以外で試してみてください。(もしもfirfoxとかお使いであれば、怪しいかも知れません)
また、サーバーでさくらインターネットをお使いの場合、サーバーコントロールパネルで「WAF」の設定ができると思います。今回使っているメールフォーム表示方法は、JavaScriptを使って非同期通信する感じなのですが、それがWAFで引っかかっているかも知れません。WAF設定を解除してお試しください。
d-kawa > Re: 【m-single】メールフォームの「入力内容を確認する」がdisabledになってしまう @ 2017/3/24 17:16
問題のスクリプトは、

    /lib/Baser/Plugin/Mail/View/Elements/mail_token.php

に記述があります。

強引に disabledを取り除くことは可能ですが、必要だから入っている処理なのでしょう。
どういう条件でこのファイルが読まれるのでしょうね。


調べてみると、

    /lib/Baser/Plugin/Mail/View/Helper/MailHelper.php

で使われているようです。コメントから推測すると、ブラウザバック対策のような。。。


続いて

    /lib/Baser/Plugin/Mail/View/Elements/mail_form.php

を見ると、


// ブラウザのヒストリーバック(戻るボタン)対応
$this->Mail->token();



とありますので、この記述が問題のような気がします。

暫定処置としては上記コードをコメントアウトすることで、「入力内容を確認する」ボタンは有効になります。
(ブラウザバック対策は無くなりますが)
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
11 人のユーザが現在オンラインです。 (10 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 11