我有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/
答案 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。