0

ここに表示できるフォームがあります:http://dev.calgunsfoundation.org/get-help/hotline/

そして、私はいくつかのjQueryを持っています:

<script type="text/javascript">
      jQuery(document).ready(function() {

          jQuery('.ginput_container label').each(function(i,e){
              fielddesc = jQuery('<div>').append(jQuery(e).clone()).remove().html();
              jQuery(e).siblings('.ginput_container input:email').before(fielddesc);
              jQuery(e).siblings('.ginput_container input:text').before(fielddesc); //moves sub label above input fields
              jQuery(e).siblings('.ginput_container select').before(fielddesc); //moves sub label above select fields (e.g. country drop-down)
              jQuery(e).siblings('.ginput_container .gfield_radio input').after(fielddesc); //keep label above radio buttons
              jQuery(e).siblings('.ginput_container .gfield_checkbox input').after(fielddesc);
              jQuery(e).remove();
          });

      });
    </script>

問題は、この行が次のことです。

jQuery(e).siblings('.ginput_container input:email').before(fielddesc);

まったく機能していないようです。

(現在、サイト自体にコメントアウトされています。)

その行を有効にすると、フォームが表示されません。無効にすると、すべてが機能します(ただし、もちろん、「電子メールの入力」および「電子メールの確認」ラベルは正しく表示されません。

jQueryが実行されていないときのコードを次に示します。

<li id="field_3_3" class="gfield gfield_contains_required">
    <label class="gfield_label" for="input_3_3">
        Email
            <span class="gfield_required">
                *
            </span>
    </label>
    <div class="ginput_complex ginput_container" id="input_3_3_container">
        <span id="input_3_3_1_container" class="ginput_left">
            <input type="email" name="input_3" id="input_3_3" value="" tabindex="17">
                <label for="input_3_3">
                    Enter Email
                </label>
        </span>
        <span id="input_3_3_2_container" class="ginput_right">
            <input type="email" name="input_3_2" id="input_3_3_2" value="" tabindex="18">
                <label for="input_3_3_2">
                    Confirm Email
                </label>
        </span>
    </div>
</li>

私は正しいことをターゲットにしているようです。input:emailを使用し、現在入力の下にあるラベルを入力の上に移動する必要があります。しかし、明らかに私は何か間違ったことをしています。

4

1 に答える 1

2

:emailは有効な:selectorではありません-これが問題の原因です jQuery(e).siblings('.ginput_container input:email')

これらの2つの入力の代わりにidセレクターを使用できます。

jQuery(e).siblings('#input_3_3, #input_3_3_2')`

またはジェネリック:

jQuery(e).siblings('input[type=email]') 

テキスト/メールの両方に一般的:

jQuery(e).siblings('input[type=email], input[type=text]') 
于 2013-03-19T02:23:06.197 に答える