javascript - 文本框仅在选中第一个单选按钮时接受数字

标签 javascript jquery

我有四个单选按钮,我希望当用户单击第一个单选按钮时,输入文本框只能接受数字,但如果他们选择其他单选按钮,则只能接受数字和文本。下面是我的代码:

<input class="form-control" type="text" id="usr_matriculation" maxlength="40" name="usr_matriculation" required="required">

    <div class="radio">
        <label class="radio-inline"><input type="radio" onclick="il.Form.showSubForm('subform_usr_id_type_1', 'usr_id_type', null);" name="usr_id_type" id="usr_id_type_1" value="1">
        New Identity Card No.</label>

    </div>


    <div class="radio">
        <label class="radio-inline"><input type="radio" onclick="il.Form.showSubForm('subform_usr_id_type_2', 'usr_id_type', null);" name="usr_id_type" id="usr_id_type_2" value="2">
        Passport No.</label>

    </div>


    <div class="radio">
        <label class="radio-inline"><input type="radio" onclick="il.Form.showSubForm('subform_usr_id_type_3', 'usr_id_type', null);" name="usr_id_type" id="usr_id_type_3" value="3">
        Army No.</label>

    </div>


    <div class="radio">
        <label class="radio-inline"><input type="radio" onclick="il.Form.showSubForm('subform_usr_id_type_4', 'usr_id_type', null);" name="usr_id_type" id="usr_id_type_4" value="4">
        Police No.</label>

    </div>

我尝试使用下面的代码,但是当我选择其他单选按钮时,我无法键入文本,只需要输入数字。我需要放 if else 吗?我需要它自动更改而不刷新页面。

$('#usr_id_type_1').click(function() {
      alert("1");

    $('input[name="usr_matriculation"]').keyup(function(e)
                                    {
      if (/\D/g.test(this.value))
      {
        // Filter non-digits from input value.
        this.value = this.value.replace(/\D/g, '');
      }
    });
    });

我的 fiddle :https://jsfiddle.net/designblog4u/yock8zdw/

最佳答案

这可能不是最好的解决方案,但我做了一些测试。

<input type="text" id="i">

<input checked type="radio" id="r_n" name="rn">
<input type="radio" id="r" name="rn">
<input type="radio" id="r" name="rn">
<input type="radio" id="r" name="rn">

这段代码可以帮助您找到正确的方法或改进您自己的代码。

$("#i").keyup(function () {
  if ($('#r_n').is(':checked')) {
  console.log("Validating #r1...")
  // Filter non-digits from input value.
  this.value = this.value.replace(/\D/g, '');
}
else {
  console.log("Validating the other radios")
  this.value = this.value.replace(/[^A-Za-z0-9]+/g, '');
}
});
// Optional: Delete input value when radio changes
$('input:radio[name="rn"]').change(
function(){
  $("#i").val('');
});

关于javascript - 文本框仅在选中第一个单选按钮时接受数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219059/

相关文章:

javascript - 仅显示一个 DIV 在具有相同类 jQuery 的单击事件上打开

javascript - Jquery 元素未重新绑定(bind) + HTMLDivElement 无法识别的表达式

ajax - 如何在 jQuery 中发出 keyup 事件 ajax 请求之前保持几毫秒

javascript - 字符串的哪一部分不同? (JavaScript)

javascript - Magento 单页结账步骤未扩展

javascript - rails 5 : update action not working for AJAXified form

javascript - 如何正确访问嵌套的 JavaScript 对象?

javascript - 如何在移动设备中滚动时隐藏水平滚动条

javascript - Scrollreveal.js 不适用于模式

javascript - jQuery Change() 不会触发