【環境情報】
・baserCMSのバージョン:4.5.4
・レンタルサーバー名:エックスサーバー
・使用テーマ:BcSample、独自
・PHPスキル(自己評価):B
フォームの「書き直す」ボタンをクリックすると、送信されてしまいます。
公式テーマ「BcSample」でも発生しており、入力欄と完了メッセージの両方が表示される状態になります。
表題の質問は以前にもあったようですが、原因が違うようです。
なお、ボタンの部分のコードは以下のとおりです。
/Elements/mail_form.php
<?php if ($freezed): ?>
<?php echo $this->Mailform->submit(' ' . __('書き直す') . ' ', ['div' => false, 'class' => 'form-submit', 'id' => 'BtnMessageBack']) ?>
<?php echo $this->Mailform->submit(' ' . __('送信する') . ' ', ['div' => false, 'class' => 'form-submit', 'id' => 'BtnMessageSubmit']) ?>
<?php else: ?>
<input name="resetdata" value=" 取り消す " type="reset" />
<?php echo $this->Mailform->submit(' ' . __('入力内容を確認する') . ' ', ['div' => false, 'class' => 'form-submit', 'id' => 'BtnMessageConfirm']) ?>
<?php endif; ?>
「いいね!」 1
デベロッパーツールで何かコンソールエラーは出ていますか?
「いいね!」 1
kaburk
3
こんちは、私も組み込んだときにも似たような事例があったのですが、
そのときは別のレイアウトなどでJSエラーが出ていて、
メールフォームに影響していたということがありましたので、似た感じかもしれません。
具体的には、メールフォームのテンプレート
theme/bc_sample/Elements/mail_form.php
をご確認いただくと、
$this->BcBaser->js(‘mail/form-submit’, true, [‘defer’])
という行が上の方(カスタマイズがなければ22行目辺り)にあると思います。
こちらのファイルが特に同名のファイルをテーマ内においてなければ
lib/Baser/Plugin/Mail/webroot/js/form-submit.js
になるかとおもうのですが、この中で
各ボタンのidを元にmodeを決定しているかと思います。
こちらがjavascriptのエラーなどで動作しておらず、全て送信になっている可能性がありそうです。
すでにご指摘もでておりますが、ブラウザのデベロッパーツールなどで
JSのエラーが出てないかを確認されると原因がわかるかもしれません。
一度確認してみてください。
それかmail_form.phpのdeferのオプションが影響しているかもしれませんので、
外してみるとかかもしれませんが、、
「いいね!」 1
ありがとうございます。
ディベロッパーツールのエラーは出ていません(/js/mail/form-submit.js は設置しています)
デバッグモードでテストしましたが、PHPのエラーも出ていませんでした。
書き直すボタンのコードは以下です。クラスを追加した以外は特に手を入れていません。
kl_vkbd_parsed=“true” というのは公式でもあったでしょうか。
<input class="c-button-submit t-submit-white" id="BtnMessageBack" type="submit" value="書き直す" kl_vkbd_parsed="true">
ありがとうございます。
deferオプションを切ってみたのですが(属性がないのを確認しました)、やはり送信されます…
kaburk
6
mail_form.php の
<?php echo $this->Mailform->hidden('MailMessage.mode') ?>
の値、ブラウザで見ると
<input type="hidden" name="data[MailMessage][mode]" id="MailMessageMode">
の値を確認してみてください。
ここが正しく動作している場合 戻るボタン押した後に Back になって送信されます。
JS側のform-submit.js で console.logとかでMailMessageModeの値を確認してみるといいかもしれません。
いずれにしても何かが影響してjavascriptが動作していない感じがします、、、
「いいね!」 1
横から失礼します。
書き直すボタンのコードは以下です。クラスを追加した以外は特に手を入れていません。
kl_vkbd_parsed=“true” というのは公式でもあったでしょうか。
<input class="c-button-submit t-submit-white" id="BtnMessageBack" type="submit" value="書き直す" kl_vkbd_parsed="true">
こちらですと、正常に動作しないと思います。
jsがデフォルトであれば、
$(function(){
$(".form-submit").click(function(){
var mode = $(this).attr('id').replace('BtnMessage', '');
$("#MailMessageMode").val(mode);
return true;
});
});
となっているはずなので、クラスに「form-submit」が無いと正しく動作しなくなります。
kl_vkbd_parsed=“true”
というのは公式では使っておりません。
外しておいたほうが良いと思います。
「いいね!」 2
ありがとうございます!不具合が解消しました!
ご指摘の通り「form-submit」クラスを書いておりませんでした…
こちらはbaserともテーマとも関係なく、使用しているセキュリティソフト(カスペルスキー)が書き込んでいたのを、ブラウザの開発者モードで拾ってしまっていました…重ね重ね失礼しました。