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/

编辑:在我的页面上,有更多的重做按钮。只有选择某个按钮,我需要显示文本。如果访问者选择另一个按钮,文本应该消失。

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 回答