2017-02-18 8 views
1

Это Javascriptя не в состоянии проверить капчу является ли это неправильно или вправо с помощью Javascript

<script> 
    function q_form_val() { 
     var patt = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 
     var captcha_entered = document.getElementById("captcha_entered").value; 
     if (captcha_entered == "") { 
      alert("Please enter the Captcha"); 
      return false; 
     } 
     return true; 
    } 
</script> 

Это HTML код

<div class="row"> 
    <div class="form-group"> 
     <label class="control-label col-sm-3"><font color="#FF0000">*</font><strong>Captcha</strong> 
     </label> 
     <div class="col-sm-3"> 
      <?php echo '<img src="captcha.php" alt="captcha">'; ?> 
      <br/> 
      <span><input name="captcha_entered" type="text" class="form-control" id="captcha_entered" size="27" maxlength="4"/></br></span> 
      <input type="hidden" name="captcha_total" id="captcha_total" value="<?php echo $_SESSION['rand_code']; ?>"> 
     </div> 
    </div> 
</div> 
<div>&nbsp;</div> 
<div class="row"> 
    <div class="col-sm-12"> 
     <center> 
      <script type="text/javascript"> 
       document.write("<input type=\"submit\" value=\"Submit\" class=\"btn1\"/>"); 
      </script> 
      <noscript> 
       <p style="color: red;"><b><i>Please enable JavaScript to continue</i></b> 
        <p> 
      </noscript> 
     </center> 
    </div> 
</div> 

я могу проверить капчу ли это пусто или нет , но я не могу проверить, является ли это неправильным или прав captcha Я думаю, я должен добавить больше кода в javascript для проверки того, является ли это неправильным или правильным?

+0

Отформатируйте свой код. '<>' icon в редакторе представляет раздел кода. Вставьте свой код в нужное окно и используйте кнопку 'Tidy' для отступов. – Rajesh

ответ

0

Вы должны использовать RegExp.test(). Она возвращает истина/ложь, если передаваемая в строке проходит испытание образца

function q_form_val() { 
    var patt = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/); 
    var captcha_entered = document.getElementById("captcha_entered").value; 
    if (captcha_entered == "") { 
     alert("Please enter the Captcha"); 
     return false; 
    }else if(!patt.test(captcha_entered)){ 
     alert("Bad Captcha Match"); 
     return false; 
    } 
    return true; 
} 

EDIT

Если вы на самом деле пытаетесь сравнить стоимость вашего скрытого поля к тому, что было введено (код о регулярных выражениях не является полезным), и вы должны использовать следующий код:

function q_form_val() { 
    var captcha_entered = document.getElementById("captcha_entered").value; 
    var captcha_total = document.getElementById("captcha_total").value; 
    if (captcha_entered == "") { 
     alert("Please enter the Captcha"); 
     return false; 
    }else if(captcha_total !== captcha_entered)){ 
     alert("Bad Captcha code"); 
     return false; 
    } 
    return true; 
} 
+0

чувак .... теперь с вашим кодом он работает для неправильного captcha ......., но он не работает с правым captcha ...... если правая captcha дана, то она должна отправить форму –

+0

Можете ли вы поставьте пример «правильного» captcha, пожалуйста .. это адрес электронной почты? – haxxxton

+0

если я поставил неправильную капкту, это покажет мне плохой captcha ......, но если я поставлю правильный captcha, то и это покажет мне плохой captcha ......? –

0

вопрос, является ли вы должны проверить капчи с помощью Javascript. Вся цель captcha состоит в том, чтобы обойти автоматические сценарии, но включая ответ в HTML делает его невероятно легким для обхода.

Вы должны проверить капчу на сервере либо через запрос формы, либо запрос AJAX.