选择任何其他单选按钮时清除文本框

时间:2016-01-22 02:34:38

标签: javascript jquery textbox radio-button clear

我昨天开始为网页制作一些代码&我无法完成一些工作。

我有4个单选按钮,其中3个具有应用于它们的值&一个允许用户输入自定义数量的文本字段,例如

[] = 3

[] = 11

[] = 32

[] = [_________] =输入自定义金额

问题是,如果用户通过按下单选按钮选择自定义金额并输入300,例如,之后决定选择预定金额11,他们仍然可以提交,这将输入两个值。

因此,如果选择了预定义的单选按钮,我所做的就是将下面的一些代码写入CLEAR文本框。

我现在遇到的问题是说页面加载并且用户立即想要输入自定义金额,9次中有9次他们更有可能在文本区域内按下或点击而不是使用旁边的单选按钮但是因为我在启动时禁用了它,我不知道解决这个UX问题的最佳方法是什么。有人可以帮忙吗?这是我到目前为止所做的:

  <input type="radio" name="am_payment" value="3" checked="checked"> <strong>64</strong>

<input type="radio" name="am_payment" value="11" checked="checked"> <strong>100</strong>

<input type="radio" name="am_payment" value="32" checked="checked"> <strong>250</strong>

<input type="radio" value="" name="am_payment"><label>Other</label>

<input type="text" name="CP_otheramount" value="" id="theamount" disabled="disabled"/>

$('input[name="am_payment"]').on('click', function() {
   if ($(this).val() === '') {
     $('input[name="CP_otheramount"]').val('');
      $('#theamount').removeAttr("disabled");
   }
   else {
      $('#theamount').prop("disabled", "disabled");
     $('input[name="CP_otheramount"]').val('');
   }
});

2 个答案:

答案 0 :(得分:1)

关于这个?

  $('input[name="am_payment"]').on('click', function() {
   if ($(this).val() === '') {
      $('#theamount').val('').prop("disabled", false).focus();
   }
   else {
      $('#theamount').val('').prop("disabled", true);
   }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label><input type="radio" name="am_payment" value="3"> <strong>64</strong></label>

<label><input type="radio" name="am_payment" value="11"> <strong>100</strong></label>

<label><input type="radio" name="am_payment" value="32"> <strong>250</strong></label>

<label><input type="radio" value="" name="am_payment" checked>Other</label>

<input type="number" name="CP_otheramount" value="" id="theamount" />

答案 1 :(得分:0)

我猜你想要的是当有人点击文字输入时 必须触发无线电事件并且输入必须处于焦点

&#13;
&#13;
function activate() {
  console.log('clicked');
  $('#other').prop('checked', true);
  $('#other').trigger('click');
  $('#theamount').focus();
}
$('input[name="am_payment"]').on('click', function() {
  console.log('changed');
  if ($(this).val() === '') {
    $('input[name="CP_otheramount"]').val('');
    $('#theamount').removeAttr("disabled");
  } else {
    $('#theamount').prop("disabled", "disabled");
    $('input[name="CP_otheramount"]').val('');
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input type="radio" name="am_payment" value="3" checked="checked"> <strong>64</strong>

<input type="radio" name="am_payment" value="11" checked="checked"> <strong>100</strong>

<input type="radio" name="am_payment" value="32" checked="checked"> <strong>250</strong>

<input type="radio" value="" name="am_payment" id="other">
<label>Other</label>

<span onclick="activate();"><input type="text" name="CP_otheramount" value="" id="theamount" disabled="disabled"/></span>
&#13;
&#13;
&#13;