サポート » プラグイン » Contactform7をcssとJavaを使ってボタンを別の画像に差し替える

  • 解決済 marine560

    (@marine560)


    チェックボックスとセレクトメニューのボタン部分を、cssとJavaを使って別の画像に差し替えようと思ったのですが、その為には指定の場所にclassを入れないと出来ません。
    http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/
    ↑こちらのサイトを参考に作りたいと思っています。

    チェックボックスの場合、タグの作成からidやclassを入れるところがあるのですが、input要素にclassを入れなければいけないのに、span要素の所にclass=”styled”が入ってしまいます。

    <span class="wpcf7-form-control-wrap checkbox-436">
    <span class="wpcf7-form-control  wpcf7-checkbox styled">
    <span class="wpcf7-list-item">
    <label>
    <input type="checkbox" name="checkbox-436[]" value="チェック1" />
    &nbsp;<span class="wpcf7-list-item-label">チェック1
    </span></label></span>

    下のようにinput要素にclassを入れるためにはどこをカスタマイズしたら出来るのでしょうか?
    <input type="checkbox" name="checkbox-436[]" value="チェック1" class="styled" />

    セレクトメニューではselect要素にclassは入れられたのですが、wpcf7-form-control wpcf7-selectと前に二つのclassが入っているために、画像が差し替わりません。

    <span class="wpcf7-form-control-wrap menu-961">
    <select name="menu-961" id="styled" class="wpcf7-form-control  wpcf7-select styled">
    <option value="セレクト1">セレクト1</option></select></span>

    この2つの問題を解決したく投稿させていただきました。
    htmlぐらいしか分からないので、そのレベルで教えていただけると助かります。よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • Contact form 7が生成したHTMLコードをそのままフォーム欄に貼り付けて、各項目にクラス名を付与してはいかがでしょうか?
    作者さんが次のトピックで回答している通り、各項目のHTMLを直接記述することもできます。
    http://ja.forums.wordpress.org/topic/10149?replies=2
    生成されたHTMLコードはフォームのページにアクセスして、ソースを表示して確認してください。
    (チェックボックスに関しては、HTMLコードを利用しますので、[checkbox ~]は削除しておきます。)
    各選択項目の表示が崩れる場合がありますので、もし崩れた場合は、
    <span class=”wpcf7-list-item”>をブロック要素にしてやるといいです。
     

    <span class="wpcf7-list-item" style="display:block;">

    テーマのCSSファイルに記述する場合は、使い方のページを参考にしてください。
    http://contactform7.com/custom-layout-for-checkboxes-and-radio-buttons/?lang=ja
     
     
    セレクトメニューに関しては、custom-form-elements.jsを変更することで対応させてみてください。
    Contact form 7が利用するクラス名が割り当てられていますので、これらを削除した場合、動作に支障が出るかもしれません。
     
    custom-form-elements.js

    inputs = document.getElementsByTagName("select");
    		for(a = 0; a < inputs.length; a++) {
    			if(inputs[a].className == "styled") {

     
    上記を次のように変更すると、複数のクラスがある場合でも、クラス名styledがあれば動作します。

    inputs = document.getElementsByTagName("select");
    		for(a = 0; a < inputs.length; a++) {
    			if(inputs[a].className.match(/styled/)) {

    トピック投稿者 marine560

    (@marine560)

    popup様
    早々の解答ありがとうございます。

    チェックボックスは生成したHTMLコードをそのままフォーム欄に貼り付け、セレクトメニューはcustom-form-elements.jsを変更で表示できましたm(__)m

    セレクトメニューはボーダーが表示されてしまったのでcssで border-style: none; にしました。

    チェックボックスについては、私が作るのであればこれで問題はないのですが、お客さまにこの方法はお願いできないので、何か他に良い方法はないものでしょうか?

    次のコードを利用中のテーマのfunctions.phpに追記すると、チェックボックスのinputにクラス名styledを追加します。(同様にラジオボタンにも追加します。)
     

    function add_contactform_elm_class() {
    echo $script =<<< CODE
    <script type="text/javascript">
    jQuery(function($) {
    	$('.wpcf7-list-item input').addClass('styled');
    })
    </script>
    CODE;
    }
    add_action('wp_print_footer_scripts', 'add_contactform_elm_class');

     
    フォーラムの利用方法について一言あります。
    今回はさほど難しくないので回答しましたが、お客様から依頼されたことを理由に別の方法を求められても困ります。
    このフォーラムで回答している人で、サポートの報酬を受け取っている人はいないはずです。
    分からないことを聞くのは自由ですが、今後は上記のことをふまえた利用をお願いします。

    トピック投稿者 marine560

    (@marine560)

    popup様

    お忙しい中、私のわがままな要望に答えていただきありがとうございます。
    教えていただいた方法でやってみたのですが、javascriptの部分が何か引っかかるようでエラーになってしまいました。

    お客さまから依頼されたのではなく、私以外の人も、もう少し簡単にできたら良いなと思ってお聞きしてみたのですが、作者の方もその方法しか答えていらっしゃらないものを、他の方にお聞きするのはマナー違反だったようですみません。
    プログラムの分からないデザイナーなので、フリーのプラグインでカスタマイズするしかないので、また使いやすいプラグインを探してみます。

    すみません。うっかり忘れていました。
    エラーになるのでしたら原因は分かりませんが、単に表示が崩れる場合は次のCSSをform.cssあるいはテーマのstyle.cssに追記してください。
     

    span.wpcf7-list-item {
    	display: block;
    	margin-top: 4px;
    }

    テーマに合わせて数値を変更する必要があるかもしれません。

    トピック投稿者 marine560

    (@marine560)

    popup様
    いろいろありがとうございます。
    Javascriptを?>と<?phpで囲ったら成功しました!
    とあるサイトでfunctionの中にcssを埋め込むときに使っていて、変な使い方しているな?と試しにやってみたら出来ました。私には何の意味か分かりませんが、逆に使うことがあるのですね。

    function add_contactform_elm_class() {
    echo $script =<<< CODE
    ?>
    <script type="text/javascript">
    jQuery(function($) {
    	$('.wpcf7-list-item input').addClass('styled');
    })
    </script>
    <?php
    CODE;
    }
    add_action('wp_print_footer_scripts', 'add_contactform_elm_class');

    レイアウトはcssで編集すれば問題ないと思います。
    ありがとうございました!!

    トピック投稿者 marine560

    (@marine560)

    すみません、
    echo $script =<<< CODEとCODE;は削除してください。

    function add_contactform_elm_class() {
    ?>
    <script type="text/javascript">
    jQuery(function($) {
    	$('.wpcf7-list-item input').addClass('styled');
    })
    </script>
    <?php
    }
    add_action('wp_print_footer_scripts', 'add_contactform_elm_class');
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「Contactform7をcssとJavaを使ってボタンを別の画像に差し替える」には新たに返信することはできません。