0

jquery 1.3.2を使用する必要があります。ボタンが選択されているかどうかを確認し、それに応じて特定のテキストフィールド内にカスタムテキストを表示するという非常に簡単なタスクがあります。状態のどこかに問題があることはわかっています。条件の内部は、フォーカス機能とぼかし機能を使用してテキスト フィールド内にカスタム テキストを表示する単純なコードです。

$(document).ready(function () {
  if ($('input#edit-quote-option-flatrate-3---0').is(":checked")) {
    $('input.default').val('xxx');
    $('.default').each(function () {
      var defaultVal = ('xxx');
      $(this).focus(function () {
        if ($(this).val() == defaultVal) {
          $(this).removeClass('active').val('');
        }
      })
        .blur(function () {
        if ($(this).val() == '') {
          $(this).addClass('active').val(defaultVal);
        }
      })
        .blur().addClass('active');
    });
  }
});

このコードが条件で機能しない理由をデバッグするのを手伝ってもらえますか? ありがとうございました。HTMLを含む完全なコードはこちらhttp://jsfiddle.net/NKcFs/

編集: 私のページには、さらに rediobuttons があります。この特定のボタンが選択されている場合にのみ、テキストを表示する必要があります。訪問者が別のボタンを選択すると、テキストが消えるはずです。

4

1 に答える 1

2

問題は、ページが読み込まれたときにのみコードが実行されることです。その時点でラジオボタンが選択されている場合、コードは実際にテキストボックスにテキストを表示します。チェックボックスの変更にコードを反応させるには、changeイベントを使用する必要があります。

$(document).ready(function () {
  $('input#edit-quote-option-flatrate-3---0').change(function(){
    if ($('input#edit-quote-option-flatrate-3---0').is(":checked")) {
      $('input.default').val('xxx');
      $('.default').each(function () {
        var defaultVal = ('xxx');
        $(this).focus(function () {
          if ($(this).val() == defaultVal) {
            $(this).removeClass('active').val('');
          }
        })
          .blur(function () {
          if ($(this).val() == '') {
            $(this).addClass('active').val(defaultVal);
          }
        })
        .blur().addClass('active');
      });
    }
  });
});
于 2013-01-13T21:59:32.713 に答える