0

我有 2 个单选按钮 (A,B) 作为运输选项和一个用于输入电话号码的输入文本字段。选择 A 后,我需要在文本区域内显示自定义帮助文本(“需要电话”)。如果选择了按钮 B - 应该没有帮助文本。

如果选择 A,则应在用户单击文本字段内部并键入数字后删除帮助文本。如果选择了任何选项并填充了文本字段。它应该保持这种状态。

我的代码有效,但如果用户选择 A 选项并在 B 选项之后不输入任何内容,则不会删除帮助文本。

$(document).ready(function () {
  $('input#edit-quote-option-flatrate-3---0').change(function () {
    if ($('input#edit-quote-option-flatrate-3---0').is(":checked")) {


  $('.default').each(function () {
    var defaultVal = ('tel');
    $(this).focus(function () {
      if ($(this).val() == defaultVal) {
        $(this).removeClass('active').val('');
      }
    })
      .blur(function () {
      if ($(this).val() == '') {
        $(this).addClass('active').val(defaultVal);
      }
    })
      .blur().addClass('active');
  });
    } else {

        $('.default').removeClass('active').val('');

    }
  });
});

完整代码在这里http://jsfiddle.net/NKcFs/2/

4

3 回答 3

1

你有没有尝试过:

$('.a').click(function () {
    var t = $('textarea');
    if (!t.val()) t.val('phone required');
    t.focus(function () {
       if (this.value == 'phone required') this.value = '';
    });
    t.blur(function () {
       if (!this.value) this.value = 'phone required';
    });
    $('.b').removeAttr('checked');
});
$('.b').click(function () {
    var t = $('textarea');
    if (!t.val() || t.val() == 'phone required') t.val('');
    $('.a').removeAttr('checked');
});

在这里工作 jsFiddle 。

于 2013-01-13T23:48:19.350 回答
1

尝试为将值设置为空白的第二个选项添加更改处理程序...这就是您想要做的,对吧?

   $('#edit-quote-option-flatrate-3---1').change(function(){  
    $('.default').each(function () {
      if($(this).val() == 'tel'){ // if the user didn't change it, clear the field
          $(this).val('');
      }
    });
  });

在这里摆弄:http: //jsfiddle.net/gcmDu/1/

于 2013-01-13T23:50:31.583 回答
0

取消选择特定单选按钮时不会触发更改事件。完成这项工作的最简单方法是将更改事件的选择器更改为:

$('input[name="quote-option"]').change(function () { ... });

这会将更改事件添加到共享名称“quote-option”的所有单选按钮,因此也会在选择 B 时触发。

此外,您需要在选择 A 选项时取消绑定您绑定的事件。因此,当您选择选项 B 时,请执行以下操作:

$('.default').unbind('blur').unbind('focus');

在这里更新了 jsFiddle 。

于 2013-01-13T23:52:05.683 回答