需要在keyup函数退出时检查长度

need to check length on exit of keyup function

本文关键字:检查 退出 函数 keyup      更新时间:2024-01-02

我写了一个keyup函数来检查长度,并在超过长度时向上发送消息,我正在编辑它,以确保它达到5位数字,因此在退出输入框时少于5位数字会发出警报。我有一个onblur,它正在工作,但如果我点击字段(不更改空格或任何内容并退出),我会得到一个错误字段0错误。有人能建议更好的方法吗

              $.fn.moRate = function (myLength) {
  fieldVal=$(this).val();
 return this.each(function () {
 $(this).keyup(function() {
   fieldValue=$(this).val();
 if ( !/^[0-9][.]+$/.test($(this).val())  ) {
 $(this).val($(this).val().replace(/[^0-9][.]/g, ''));
 }
  if (fieldValue.length>myLength )
{ 
 this.value=fieldValue.substr(0,myLength);
 var myThis=$(this).attr('id');
moAlert('Number Only Field','You have reached the field length: '+myLength,$(this))
  }
 });
    $(this).blur(function(){
 if ($(this).val()==='')
 { $(this).val(fieldVal)}
if (fieldValue.length!=5){alert('Rate must be 5 digits including decimal')}

 });
 });
 }; 

 }; 

如果输入的无效,您可以使用required属性、pattern属性以及RegExp 'd+'.'d+|'.'d+maxlength属性设置为6css :focus:invalid伪选择器和title属性来显示消息

input:focus:invalid + [for="input"]:after {
  content: "Rate must be 5 digits including decimal";
  color: red;
}
<form>
  <input id="input" 
         type="text" 
         pattern="'d+'.'d+|'.'d+" 
         maxlength="6" 
         title="Required input: five digits including a decimal" 
         required /><label for="input"></label><br>
  <input type="submit" />
</form>