1

このJSフィドルを確認してください。http://jsfiddle.net/jclamp/Nf7Fc/3/

Name のラベルは jquery を介して作成され、その位置は親フィールドの位置を使用して設定できます。

電子メールのラベルは、フォーム検証によって作成されます。同じjqueryでその位置を設定できるはずですが、そうではありません。なんで?

作品:

$('#name').after('<label class="error" for="name">I can create this label via jquery and then move it\'s position.</label><br>');

$('label.error').css('left', 
                     function() {
                    return $('input[name='+$(this).attr('for')+']' ).offset().left;
                     } 
                      );

動作しません:

$("#registerForm").validate();

$('label.error').css('left', 
                     function() {
                    return $('input[name='+$(this).attr('for')+']' ).offset().left;
                     } 
                      );
4

1 に答える 1

1

.prop()代わりに試してください.attr()

    $('label.error').css('left', function() {
        // find input element assigned to the label
        var inputName = $(this).prop('for'); // <--- here
        var inputElement = $('input[name=' + inputName + ']' );

        // you can use logging to see which element jQuery actually found:
        console.log(inputElement);

        return inputElement.offset().left;
    });

これが実際の例です:http://jsfiddle.net/JjYPR/3/

お役に立てれば。

ただし、コードにはいくつかのメモがあります。jsfiddle のコードがまったく機能していませんでした。要素の名前にいくつかのエラーがあり、送信ボタンを押したときに何も検証されませんでしたが、別のエラーが発生しました。次回質問を投稿するときは、次のヒントを念頭に置いてください。

  • Firebug またはその他のデバッグ ツールを使用してエラーを確認する
  • コードが機能する設定がある場合は、それも機能する jsfiddle を作成します
  • コードをインデントして読みやすくする

そうすれば、人々はあなたを助けやすくなります。;)

于 2013-04-23T06:23:17.990 に答える