0

我必须进行简单的验证。它第一次工作正常,但在文本中填充值后,如果按 F5 刷新页面,则代码将无法正常工作。

产生错误的步骤

  1. 专注于第一个文本框并模糊而不填充任何值。函数将警告“错误”并且名为错误的类将添加到文本框

  2. 现在将在文本框中输入值并按 F5。然后从文本框中删除值,模糊功能将提示“无错误”这是问题。它应该提醒,因为我们在空文本框上模糊。

我投资了门,发现这个问题是由于 onload 函数而发生的,如果输入文本值不等于空白,则我提到代码然后模糊文本框

<head>
  <script type="text/javascript" src="jquery-1.8.3.js"></script>
  <script type="text/javascript">
    $(function(){
       $('input').blur(function(){
          if($(this).hasClass('error')){
             alert('error')
          }
          else {
             alert('no error')
         }
     }) 
  })

  function test(id){
     if($(id).val()==''){
       $(id).addClass('error')
     }
     else {
       $(id).removeClass('error')
     }
  }

  $(function(){
     setTimeout(function(){
          $('input').each(function(){
             if($(this).val()!=''){
                $(this).blur();
             }
          })
     },1000)
  })
</script>
<style>
    .error{ border:#F00 solid 1px}
</style>
</head>


<body>
    <input type="text" onblur="test(this)"/>
    <input type="text" onblur="test(this)" />
</body>
4

2 回答 2

0

只需尝试以下内容:

脚本部分:

  <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script type="text/javascript">
  function test(textId){    
     if($("#"+textId).val()==""){
       $("#"+textId).addClass("error"); 
       alert("Error"); 
       setTimeout(function(){
       $("#"+textId).focus();
       },100);
       return false;
     }
     else {
       $("#"+textId).removeClass("error");
       alert("No Error");
       return true;
     }
  }
  </script>

HTML部分:

<style>
    .error{ border:#F00 solid 1px}
</style>
<body>
    <input type="text" onblur="test(this.id);" id="text1" value=""/>
    <input type="text" onblur="test(this.id);" id="text2" value=""/>
</body>

我认为这可以帮助您解决问题。

于 2013-03-26T09:47:51.720 回答
0

最好在判断输入框是否为空的时候检查值,而不是css类。

$('input').blur(function () {
    if ($.trim($(this).val()) == '') {
        alert('error')
    } else {
        alert('no error')
    }
});

我认为 FF 试图保留 HTML 文档的状态,因此该类仍然应用于元素

于 2013-03-26T08:47:24.233 回答