0

jQuery에서 원격 규칙을 추가 할 때 작성중인 양식으로 Internet Explorer에서 이상한 동작이 발생합니다. 즉, 원격 "check_username.php"를 사용하여 "username"과 관련된 규칙의 유효성을 검사하십시오. 아래 코드에서 jquery 스크립트를 사용하는 view.php 스크립트를 사용하고 사이트 전체의 페이지에서 유니폼보기를 갖는 "page_start"사용자 정의 함수를 만듭니다. 다음은 view.php에 JQuery와 스크립트입니다 :PHP에서 jQuery 원격 유효성 검사 Internet Explorer에서 이상한 일을하는 양식 입력과 관련된 MySQL 쿼리

<script type="text/javascript" src="/StructuredPages/js/jquery.js"></script> 
<script type="text/javascript" src="/StructuredPages/js/jquery.validate.js"></script> 
<script type="text/javascript" src="/StructuredPages/js/jquery.validate.password.js"></script> 

이 후, I가 클라이언트 측 유효성 검사를 원하는 형태 코드 인 create_user_redo_old.php 파일을 통해 서버 측 유효성 검사가 있습니다.

<?php 

    require_once $_SERVER['DOCUMENT_ROOT'] . "/StructuredPages/scripts/view.php"; 

    $inline_javascript = <<<EOD 
     $(document).ready(function() { 
      $("#signup_form").validate({ 
      rules: { 
      first_name: { 
      minlength : 2 
      }, 
       last_name: { 
      minlength : 2 
      }, 
      username: { 
      minlength: 4, 
     remote: "check_username.php" 
      }, 
       street: { 
      minlength : 5 
      }, 
      city: { 
      minlength : 2 
      }, 
      postal_code: { 
     minlength: 5 
      }, 
       password: { 
       minlength: 6 
       }, 
       confirm_password: { 
       minlength: 6, 
       equalTo: "#password" 
       } 
      }, 
      messages: { 
      first_name: { 
      minlength: "First Name must contain at least 2 characters" 
      }, 
      last_name: { 
       minlength: "Last Name must contain at least 2 characters" 
      }, 
      username: { 
      minlength: "Username must contain at least 4 characters", 
     remote: "Username already exists, please try another" 
      }, 
      street: { 
      minlength: "Street must contain at least 5 characters" 
       }, 
      city: { 
      minlength: "City must contain at least 2 characters" 
      }, 
      postal_code: { 
       minlength: "Zip Code must contain 5 numerals" 
       }, 
       password: { 
       minlength: "Passwords must be at least 6 characters" 
       }, 
       confirm_password: { 
       minlength: "Passwords must be at least 6 characters", 
       equalTo: "Your passwords do not match." 
       } 
      } 
      }); 
     }); 
    EOD; 

    page_start("Free Member Registration", $inline_javascript); 
    ?> 

    <div id="content"> 
    <h1>Member Registration</h1> 
    <p>Please enter your information below:</p> 
    <form id="signup_form" action="create_user_redo_old.php" 
      method="POST" enctype="multipart/form-data"> 
     <fieldset> 
     <label for="first_name">First Name:</label> 
     <input type="text" name="first_name" id="first_name" size="20" class="required" /><br /> 
     <label for="last_name">Last Name:</label> 
     <input type="text" name="last_name" id-"last_name" size="20" class="required" /><br /> 
     <label for="username">Username:</label> 
     <input type="text" name="username" id="username" size="20" class="required" /><br /> 
     <label for="password">Password:</label> 
     <input type="password" id="password" name="password" 
       size="20" class="required password" /> 
     <div class="password-meter"> 
      <div class="password-meter-message"> </div> 
      <div class="password-meter-bg"> 
      <div class="password-meter-bar"></div> 
      </div> 
     </div> 
     <br /> 
     <label for="confirm_password">Confirm Password:</label> 
     <input type="password" id="confirm_password" name="confirm_password" 
       size="20" class="required" /><br /> 
     <label for="email">E-Mail Address:</label> 
     <input type="text" name="email" size="30" class="required email" /><br /> 
     <label for="street">Street:</label> 
     <input type="text" name="street" id="street" size="50" class="required" /><br /> 
     <label for="city">City:</label> 
     <input type="text" name="city" id="city" size="30" class="required" /><br /> 
     <label for="state">State:</label> 
     <select name="state" class="required"> 
      <option value=""></option> 
      <option value="AL">Alabama</option> 
      <option value="AK">Alaska</option> 
      <option value="AZ">Arizona</option> 
      <option value="AR">Arkansas</option> 
      <option value="CA">California</option> 
      <option value="CO">Colorado</option> 
      <option value="CT">Connecticut</option> 
      <option value="DE">Delaware</option> 
      <option value="DC">District of Columbia</option> 
      <option value="FL">Florida</option> 
      <option value="GA">Georgia</option> 
      <option value="HI">Hawaii</option> 
      <option value="ID">Idaho</option> 
      <option value="IL">Illinois</option> 
      <option value="IN">Indiana</option> 
      <option value="IA">Iowa</option> 
      <option value="KS">Kansas</option> 
      <option value="KY">Kentucky</option> 
      <option value="LA">Louisiana</option> 
      <option value="ME">Maine</option> 
      <option value="MD">Maryland</option> 
      <option value="MA">Massachusetts</option> 
      <option value="MI">Michigan</option> 
      <option value="MN">Minnesota</option> 
      <option value="MS">Mississippi</option> 
      <option value="MO">Missouri</option> 
      <option value="MT">Montana</option> 
      <option value="NE">Nebraska</option> 
      <option value="NV">Nevada</option> 
      <option value="NH">New Hampshire</option> 
      <option value="NJ">New Jersey</option> 
      <option value="NM">New Mexico</option> 
      <option value="NY">New York</option> 
      <option value="NC">North Carolina</option> 
      <option value="ND">North Dakota</option> 
      <option value="OH">Ohio</option> 
      <option value="OK">Oklahoma</option> 
      <option value="OR">Oregon</option> 
      <option value="PA">Pennsylvania</option> 
      <option value="RI">Rhode Island</option> 
      <option value="SC">South Carolina</option> 
      <option value="SD">South Dakota</option> 
      <option value="TN">Tennessee</option> 
      <option value="TX">Texas</option> 
      <option value="UT">Utah</option> 
      <option value="VT">Vermont</option> 
      <option value="VA">Virginia</option> 
      <option value="WA">Washington</option> 
      <option value="WV">West Virginia</option> 
      <option value="WI">Wisconsin</option> 
      <option value="WY">Wyoming</option> 
      <option value="AS">American Samoa</option> 
      <option value="FM">Federated States of Micronesia</option> 
      <option value="GU">Guam</option> 
      <option value="MH">Marshall Islands</option> 
      <option value="MP">Northern Mariana Islands</option> 
      <option value="PW">Palau</option> 
      <option value="PR">Puerto Rico</option> 
      <option value="VI">Virgin Islands</option> 
     </select><br /> 
     <label for="postal_code">Zip Code:</label> 
     <input type="text" name="postal_code" id="postal_code" size="5" maxlength="5" class="required digits" /><br /> 
     <input type="hidden" name="MAX_FILE_SIZE" value="400000" /> 
     <label for="user_pic">Upload a picture:</label> 
     <input type="file" name="user_pic" size="30" /><br /> 
     <label for="bio">Bio:</label> 
     <textarea name="bio" cols="40" rows="10"></textarea> 
     </fieldset> 
     <br /> 
     <fieldset class="center"> 
     <input type="submit" value="Register" /> 
     <input type="reset" value="Clear and Restart" /> 
     </fieldset> 
    </form> 
    </div> 

    <div id="footer"></div> 
</body> 
</html> 

는 IE에서

<?php 
    require_once $_SERVER['DOCUMENT_ROOT'] . '/StructuredPages/scripts/app_config.php'; 
    require_once $_SERVER['DOCUMENT_ROOT'] . '/StructuredPages/scripts/database_connection.php'; 

    $name = trim($_REQUEST['username']); 
    $uname = mysql_real_escape_string($name); 

    $query = "SELECT username FROM users WHERE username='$uname';"; 
    $res = mysql_query($query); 
    if (mysql_num_rows($res) != 0) 
    { 
     $output = false; 
    } else { 
     $output = true; 
    } 
    echo json_encode($output); 
?> 

내 문제는 사용자 이름 유효성 검사 MySQL 데이터베이스의 특정 사용자 이름 때로는 만 작동되는 check_username.php 코드입니다. 그리고 만약 당신이 데이터베이스에서 사용자 이름을 시도하고 "Username already exists ..."라는 메시지가 나오지 않는다면 일들이 바뀌고 다른 메시지가 나타나면 그 필드가 검증 될 수 없다하더라도, class = "required"의 제품으로 "This field is required"와 같은 jQuery 유효성 검사 minlength 규칙의 결과로 "Username은 (는) 적어도 4 자 이상이어야합니다."라는 메시지가 표시됩니다. 이것에 대한 가장 신비한 것은 특정 사용자 이름이 일치하고 다른 사용자 이름이 일치하지 않는 이유입니다. 일치하는 항목이 발견되었지만 특정 사용자 이름이 코드를 위반하게 만들었습니다. 또한 Chrome에서도 정상적으로 작동합니다. 이 변경

+0

그러나이 코드는 Internet Explorer 8에서도 잘 작동합니다 (원격 유효성 검사 결과 메시지가 나타나기 전에 잠시 시간이 걸리지 만 올바르게 나타납니다). 그래서 위의 문제는 IE 9에있는 것처럼 보입니다. –

+0

좋아, $ (document) .ready (function() {... your code ...}) with : jQuery (function) {... 귀하의 코드 ...}) –

답변

0

은 :와

$(document).ready(function(){...}) 

:

jQuery(function(){...}) 

의 형식은 스크립트에서 남았습니다 IE9 동작을 해결. Internet Explorer에서 jQuery를 사용하여 원격 검증에 이상한 문제가있는 경우이 시도해보십시오.

관련 문제