使用isNumeric

时间:2016-12-16 14:57:33

标签: javascript jquery

我正在尝试检查输入字段中是否至少有一位数字。如果有,我想更改默认图像。

我的.isNumeric函数出错了。我知道它显示在$.isNumeric的文档中,但我不确定如何在hasNumber.isNumeric().length >= 1;中添加它。

如果能够实现这一功能,我会接受不同的功能。

$('#register').keyup(function() {
  var hasNumber = $("#password").val();
  var hasNumberValid = hasNumber.isNumeric().length >= 1;
  $('#upperCase').attr('src', hasNumberValid ? 'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQlyqJ14HYP1WclpK9RkJWo8jIDBkhTW0GS31AxRkozAEA72ULhY89LIzk' : 'icons/collection/delete.png');
});
#password-check {
  margin: 30px auto;
}
.password-check-field {
  color: black;
}
.password-check-field img {
  margin-right: 15px;
  height: 15px;
  width: 15px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="" method="POST" id="register">
  <div class="field">
    <label for="firstname">First Name</label>
    <input type="text" name="firstname" required>
  </div>
  <div class="field">
    <label for="password">Choose a password</label>
    <input type="password" name="password" id="password" required>
  </div>
  <div class="password-check-field">
    <img id="upperCase" src="icons/collection/delete.png" alt="Success">Your password has at a number in it
  </div>
</form>

5 个答案:

答案 0 :(得分:2)

$.isNumeric()接受任意值的参数,因此您可以通过以下方式将$("#password").val()传递给它:

$.isNumeric(hasNumber)$.isNumeric( $("#password").val() )

  

$.isNumeric()方法检查其参数是否代表a   数值。如果是,则返回true。否则返回false。该   参数可以是任何类型。

不需要在{1}上使用length

答案 1 :(得分:1)

试试这样。

&#13;
&#13;
$('#register').keyup(function() {
  var hasNumber = $("#password").val();
  var hasNumberValid = false;
  
  var inputArray = hasNumber.split('');
  
  inputArray.forEach(function(element) {
    if($.isNumeric(element))
      {
         hasNumberValid = true
       }
   });
  

  $('#upperCase').attr('src', hasNumberValid ? 'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQlyqJ14HYP1WclpK9RkJWo8jIDBkhTW0GS31AxRkozAEA72ULhY89LIzk' : 'icons/collection/delete.png');
});
&#13;
#password-check {
  margin: 30px auto;
}
.password-check-field {
  color: black;
}
.password-check-field img {
  margin-right: 15px;
  height: 15px;
  width: 15px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="" method="POST" id="register">
  <div class="field">
    <label for="firstname">First Name</label>
    <input type="text" name="firstname" required>
  </div>
  <div class="field">
    <label for="password">Choose a password</label>
    <input type="password" name="password" id="password" required>
  </div>
  <div class="password-check-field">
    <img id="upperCase" src="icons/collection/delete.png" alt="Success">Your password has at a number in it
  </div>
</form>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

isNumeric()返回一个布尔值。检查一下是否属实。尝试使用$.isNumeric()

var hasNumberValid = $.isNumeric(hasNumber)

答案 3 :(得分:0)

您可以使用简单的正则表达式来检查字符串中是否有数字

var hasNumberValid = hasNumber.match(/\d+/g) != null;

答案 4 :(得分:0)

我会将密钥放在密码字段而不是表单上,并使用正则表达式而不是isNumericn,因为文档说明&#34;描述:确定其参数是否代表JavaScript编号。&#34;我不确定在你有数字和字母的情况下是否真的如此。

fiddle example

var AtLestOneLetterAndOneNumberRegex = new RegExp(".*[0-9].*");
$('#password').keyup(function() {
  var passwordValue = $("#password").val();
  if (AtLestOneLetterAndOneNumberRegex.test(passwordValue)){

    $("#validPasswordMessage").css("visibility","visible");
  }

});