16-讨论
10.3.4 讨论
jQuery的 .siblings() 方法仅返回兄弟元素,而不是你试图寻找其兄弟元素的那个HTML元素。所以, $(this).siblings('input:radio') 可以改写为 $(this).siblings('input') ,因为只有一个输入兄弟元素。我喜欢包含 :radio 选择器,因为这样更加明确,创建的代码也是不言自明的。
使用 $('#source5txt').focus(...) 直接获得Other文本输入字段,并用它的 id 属性直接获取单选按钮非常简单。虽然这也是完全可用的方法,但是前面展示的代码更灵活。如果有人决定修改Other单选钮会怎么样呢?如果每个单选钮都关联了文本输入字段又当如何?抽象的解决方案不用多花力气就能够处理这些情况。
为什么使用 .blur() 代替文本输入字段上的 .focus() ?虽然 .focus() 能够更直接地选择关联的单选按钮,但如果用户简单地用Tab键选择不同元素, .focus() 可能意外地选中单选按钮。使用 .blur() 然后检查按钮值可以避免这个问题。
禁用JavaScript会发生什么情况?用户必须手动单击进入文本输入字段开始输入,也必须手动选择单选按钮。你剩下的工作是决定在用户输入文本并选择不同单选按钮的时候验证和处理提交数据的方法。