2012-10-01 8 views
1

양식에 거의 문제가 없어 유효성 검사에 js를 사용하고 있습니다.양식 유효성 검사 오류

여기 내 양식 코드입니다.

<form method="get" onkeydown="checkEnter()" action="emailform.php" id="signupform" name="subscribe"> 
    <input name="email" id="email" type="text" value="Enter Email for Updates" onfocus="if(this.value=='Enter Email for Updates'){this.value=''};" /> 
    <input type="hidden" name="submitted" id="submitted" value="true" /> 
</form> 

ID signupform 확인을 위해 사용하고 입력 버튼을 누르면 양식이 제출됩니다.

그러나 signupform을 입력하면 유효성 검사가 올바르게 시작되고 올바른 전자 메일을 입력하면 오류가 표시되고 signupform ID를 제거하면 유효성 검사없이 유효합니다.

다음은 ID signupform을위한 JS 코드입니다.

function SubscribeForm() { 
    $('#signupform').submit(function() { 
    $('.email').removeClass('error') 
    $('em.error').remove(); 

    var error = false; 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

    if ($.trim($('.email').val()) == '') { 
     $(this).append('<em class="error">Please enter your email address.</em>'); 
     $(this).addClass('error'); 
     error = true; 
    } else if (!emailReg.test(jQuery.trim($('.email').val()))) { 
     $(this).append('<em class="error">Please enter a valid email address</em>'); 
     $(this).addClass('error'); 
     error = true; 
    } 
    if (!error) { 
     $("#submit", this).after('<span id="form_loading"></span>'); 
     var formValues = $(this).serialize(); 

     $.post($(this).attr('action'), formValues, function (data) { 
     $("#signupform").before(data); 
     }); 

     $(':input[type="text"]').attr('value', ''); 
    } 
    return false 
    }); 
} 
+0

정말 감사드립니다. 나는 그 작은 문제 또는 내가 놓치고있는 것을 바란다. –

답변

0

도움 주셔서 감사합니다. 나는 이것을 넣고 잘 작동합니다.

$('#signupform').submit(function(){ 
     $('.email').removeClass('error') 
     $('em.error').remove(); 
     var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
     sEmail = document.getElementById('email').value; 
     if (filter.test(sEmail)) { 

      return true; 
     } 
     else { 
      if(sEmail == '') 
      { 
       $(this).append('<em class="error">Please enter your email address</em>'); 
       $(this).addClass('error'); 
      } 
      else 
      { 
       $(this).append('<em class="error">Please enter a valid email address</em>'); 
       $(this).addClass('error'); 
      } 
      return false; 
     } 
    }); 
}); 
1

변화

return false 

return error; 

으로는 문제가 발생한다.

+0

아니요 여전히 작동하지 않습니다 –

+0

전체 유효성 검사를 다시 제거하십시오. –

1

변화

반환 거짓;

반환

에 오류!

또한, 당신이 필요로하지 않는 경우에 "#email"또한

0

가능한 솔루션을 코드 ".email"를 선택하는 입력 이메일 필드 또는 변경 JQuery와에 CSS 클래스 "이메일"을 추가 이전 브라우저를 지원하려면 placeholder.

<input placeholder="Enter email" type="text"... /> 
+0

그래,하지만 난 그걸 알고 있지만 이전 브라우저 지원이 필요합니다 : ( –

+0

* 올바른 * 방법은 다음과 같은 두 가지를 모두 지원하는 것입니다. http://webdesignerwall.com/tutorials/cross-browser-html5-placeholder-text 불행히도, 우리는 항상 다시 쓸 시간이 없습니다 : / – Zlatko