如果选中复选框,则从文本字段中删除文本

时间:2013-01-13 23:37:43

标签: jquery

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

如果选择了A,则应在用户在文本字段内单击后删除helptext并键入数字。 如果选择了任何选项并填写了文本字段。它应该保持这种方式。

我的代码有效,但如果用户选择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/

3 个答案:

答案 0 :(得分: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 here

答案 1 :(得分: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/

答案 2 :(得分:0)

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

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

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

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

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

更新了jsFiddle here