Javascript禁用输入字段

Javascript disable input field

本文关键字:字段 输入 Javascript      更新时间:2023-09-26

我有两个输入字段,一个是电话号码,另一个是电子邮件。我想根据用户选择禁用一个字段。如果用户单击其中一个字段并输入输入,则会禁用另一个字段,反之亦然。

我已经写了代码,但似乎只有在电话字段中输入数字时才能禁用电子邮件字段。删除电话字段中的号码将删除电子邮件输入字段中的禁用号码。

在我的HTML 中

 <input type="number" name="number" placeholder="hone" class="cellphone" data-cp-visibility="new-user" id="phone">
 <input type="email" name="email" placeholder="enter email" class="email" data-cp-visibility="new-user" id="email">

在JAVASCRIPT 中

 $('#phone').live('blur',function(){ 
     if(document.getElementById('phone').value > 1) {
        $('#email').attr('disabled', true);
      } else {
       $('#email').attr('disabled', false);
  }
 });
$('#email').live('blur',function(){ 
   if(document.getElementById('email').value > 1) {
    $('#phone').attr('disabled', true);
     } else {
       $('#phone').attr('disabled', false);
   }
});

最终,我想实现的是,用户可以点击其中一个字段,然后输入输入,这样做后,另一个字段将被禁用。如果他们选择删除他们输入的文本,它将删除禁用的功能,然后他们可以选择相反的输入字段。

我不知道为什么它只适用于一个字段而不适用于另一个字段,或者为什么如果你在电话字段中输入333-333-3333,它会打破禁用状态,但33333333可以正常工作。

关于我可能缺少什么,有什么想法或见解吗?

要修复手机输入中的dash问题,可以尝试将其更改为:

<input type="text" required="" pattern="'d{3}['-]'d{3}['-]'d{4}" name="phone" id="phone"  data-cp-visibility="new-user" placeholder="123-345-5678">

这里是js的另一个版本:

var $phone = $('#phone'),
    $email = $('#email');
$phone.on('keyup change', function() {
   $email.prop('disabled', $(this).val() ? true : false );
});
$email.on('keyup change', function() {
    $phone.prop('disabled', $(this).val() ? true : false );
});

您可以使用jQuery on而不是live。live自jQuery 1.7起已弃用。您还可以在输入元素上查找keyup/keydown事件。

$(function(){
   $('#phone').on('keyup',function(){ 
      if($(this).val()!=="") 
      {
        $('#email').prop('disabled', true);
      }
      else {
        $('#email').attr('disabled', false);
      }
   });
   $('#email').on('keyup',function(){ 
      if($(this).val()!=="") 
      { 
         $('#phone').prop('disabled', true);
      }
      else {
          $('#phone').prop('disabled', false);
      }
  });      
});

这是一个工作样品。

我建议使用.on('input', ...)来侦听更改,这样即使使用递增/递减按钮(或其他形式的输入)也会触发事件处理程序。然后使用.attr('disabled', boolean)控制启用/禁用状态,参见以下示例:

$(function() {
  $('#phone').on('input', function() {
    $('#email').attr('disabled', $(this).val() !== "");
  });
  $('#email').on('input', function() {
    $('#phone').attr('disabled', $(this).val() !== "");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" placeholder="phone" id="phone">
<input type="email" placeholder="enter email" id="email">