表单增强与验证——单选按钮(other单选按钮和text的结合)

这篇博客介绍了如何在表单中实现单选按钮的增强,特别是当用户选择'other'选项时,会触发一个文本输入框显示,允许用户输入自定义内容。同时,如果选择非'other'选项,输入框会自动隐藏并清空内容。文中提供了用于添加和移除事件监听器的辅助函数,并展示了HTML和JavaScript代码片段来实现这一功能。
摘要由CSDN通过智能技术生成

每次用户选中单选按钮代码就会检测用户师傅选择了other选项。

  • 如果选择的other选项将显示一个文本输入框。
  • 如果选择了前两个选项。将隐藏文本框并将文本框里的值清空。

HTML

<form name="" action="" method="post">
            <input type="radio" name="heard" value="search" id="search" />
            <label for="search">Search engine</label><br>


            <input type="radio" name="heard" value="print" id="print" />
            <label for="print">Newspaper or magazine</label><br>


            <input type="radio" name="heard" value="other" id="other" />
            <label for="other">Other</label><br>
            <input type="text" name="other-input" id="other-text" />
  
            <input id="submit" type="submit" value="submit" />
</form>
<script src="js/utilities.js"></script>
 <script src="js/input-type.js"></script>


utilities.js

<span style="font-weight: normal;"><span style="font-size:12px;">// Helper function to add an event listener
function addEvent (el, event, callback) {
  if ('addEventListener' in el) {                  // If addEventListener works
    el.addEventListener(event, callback, false);   // Use it
  } else {                                         // Otherwise
    el['e' + event + callback] = callback;         // CreateIE fallback
    el[event + callback] = function () {
      el['e' + event + callback](window.event);
    };
    el.attachEvent('on' + event, el[event + callback]);
  }
}

// Helper function to remove an event listener
function removeEvent(el, event, callback) {
  if ('removeEventListener' in el) {                      // If removeEventListener works
    el.removeEventListener(event, callback, false);       // Use it 
  } else {                                                // Otherwise
    el.detachEvent('on' + event, el[event + callback]);   // Create IE fallback
    el[event + callback] = null;
    el['e' + event + callback] = null;
  }
}</span></span>

input-type.js

(function() {
  var form, options, other, otherText, hide;           // Declare variables
  form      = document.getElementById('how-heard');    // Get the form
  options   = form.elements.heard;                     // Get the radio buttons
  other     = document.getElementById('other');        // Other radio button
  otherText = document.getElementById('other-text');   // Other text input
  otherText.className = 'hide';                        // Hide other text input


  for (var i = [0]; i < options.length; i++) {         // Loop through radios
    addEvent(options[i], 'click', radioChanged);       // Add event listener
  }


  function radioChanged() {
    hide = other.checked ? '' : 'hide';                // Is other checked?
    otherText.className = hide;                        // Text input visibility
    if (hide) {                                        // If text input hidden
      otherText.value = '';                            // Empty its contents
    }
  }
}());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值