15-解决方案2
10.3.3 解决方案2
进一步拓展思路,当单选按钮选中时,可以调用文本字段的 .focus() 方法。需要注意的是,下面的代码完全替代了前一个解决方案,不采用 .blur() 方法之后链接 .each() 方法的方案,而是使用 .each() 方法,因为这样可以访问所有需要的对象:
$('#chooseSource input:text').each(function(){
// 下面的代码都使用两次,所以把它们存储在函数中以达到更高的效率
// 文本输入字段
var $inputTxt = $(this);
// 关联的单选按钮
var $radioBtn = $inputTxt.siblings('input:radio');
// 监听文本输入字段的blur事件
$inputTxt.blur(function(){
//如果文本输入字段中有文本
if ( $inputTxt.val() != '' ) {
// 选中单选按钮
$radioBtn.attr('checked',true);
}
});
// 监听单选按钮的change事件
$radioBtn.change(function(){
// 如果按钮选中,将焦点放在文本输入字段上
if ( this.checked ) { $inputTxt.focus(); }
});
}); //结束each()