0

jQueryにリモートルールを追加すると、ビルドしているフォームでInternet Explorerでいくつかの奇妙な動作が発生しています。 "check_username.php"を使って "username"に関するルールを検証してください。以下のコードでは、jqueryスクリプトを使用するview.phpスクリプトを使用して、サイト全体のページで統一されたビューを持つ「page_start」カスタム関数を作成しています。これらは、view.phpにjqueryのスクリプトです:jQueryのリモートからの検証PHPからのフォームの入力に関連する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> 

これは、その後、私はクライアント側の検証をしたいフォームのコードである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で私の問題は、ユーザ名の検証は、MySQLデータベースに特定のユーザ名のために、時にはのみ動作することであるcheck_username.phpコード

<?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); 
?> 

です。また、データベースでユーザー名を試しても、「Username already exists ...」というメッセージが表示されない場合は、ソートから外れて表示され、いったん別のメッセージが表示されても確認できない場合でも、 class = "required"のプロダクトとして "This field is required"、jquery validation minlengthルールの結果として "Usernameは少なくとも4文字を含んでいなければなりません"などのメッセージが表示されます。これに関する最も不思議なことは、特定のユーザー名が一致し、他のユーザー名が一致しない理由です。一致が見つかりましたが、特定のユーザー名がコードを破損しているようです。また、Chromeでも正常に動作します。

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

:この変更

+0

ところで、このコードはInternet Explorer 8でも正常に動作しています(リモート検証の結果としてのメッセージは、表示される前に1秒かかるが、正しく表示されます)。上記の問題は、IE 9のように見えます。 –

+0

$(document).ready(function(){... your code ...}) with: jQuery(function ){...あなたのコード...}) –

答えて

0

jQuery(function(){...}) 

は、フォームスクリプトでグラグラIE9の動作を解決しました。 Internet ExplorerでjQueryを使用してリモート検証で奇妙な問題が発生した場合は、これを試してみてください。

関連する問題