2017-11-03 8 views
0

Jqueryの検証に2つの問題があります。JQueryの検証では、リモートエラーが表示されず、フォームの送信ボタンが機能しない

1)必要なエラーメッセージは表示されますが、リモートエラーメッセージは表示されません。私は、ChromeのF12/Networkタブでサーバーの応答(false/true)を確認しました。

2)フォーム送信ボタンがまったく機能していません。 (しかし、私はすべてのスクリプトコードを削除した場合、それが働いている。)ここで

が私のコードです:

<style> 
    input.error, textarea.error {border:1px solid red;} 
    label.error {display:block; color:red; margin-top:15px;} 
</style> 

<script> 
$(function() { 
    $("#signupForm").validate({ 
     onkeyup: function (element, event) { 
      if (event.which === 9 && this.elementValue(element) === "") { 
       return; 
      } else { 
       this.element(element); 
      } 
     }, 
     rules: { 
      inputNickname: { 
       required: true, 
       remote: { 
        url: "signup_check.php", 
        type: "post", 
        data: { 
         inputNickname: function() { 
          return $("#inputNickname").val(); 
         } 
        } 
       } 
      } 
     }, 
     messages : { 
      inputNickname: { 
       required: "Please enter the nickname.", 
       remote: "The nickname is already in use." 
      } 
     }, 
     submitHandler: function(form) { 
      alert('submit check'); 
      form.submit(); 
     } 
    }); 
}); 
</script> 

<form class="form-horizontal" id="signupForm" action="signup_ok.php" method="post" enctype="multipart/form-data"> 
<fieldset> 
    <legend>Sign up</legend> 
    <div class="form-group"> 
     <label class="col-lg-2 control-label" for="inputNickname">Nickname</label> 
     <div class="col-lg-10"> 
      <input class="form-control" id="inputNickname" type="text" name="inputNickname"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-lg-10 col-lg-offset-2"> 
      <a class="btn btn-default" onclick="return confirm('Are you sure you want to cancel?')" href="javascript:history.back(-1)">Cancle</a> 
      <button class="btn btn-primary" type="submit">Register</button> 
     </div> 
    </div> 
</fieldset> 
</form> 

私がなぜ、何が悪いのかわからない...

+0

私が知っている限り、 'inputNickname'検証のために' inputNickname.val() 'が自動的にリモートチェッカーに送られます。バリデーションされるものと並行して*追加のフィールドが送られるようにするには 'data:{...}'を指定する必要があります(つまり 'inputNickname')。私が推測しなければならないのであれば、 'data'で' inputNickname'を送信しても問題ありませんが、 'data'を完全に省略して何が起こるかを見てみてください。 –

+0

@ Roamer-1888 //ありがとう、しかし何も変わっていません... – KimNR

+0

'Tways a longshot。 [この回答](https://stackoverflow.com/a/10905164/3478010)は、すべてを正しく行っていることを示唆していますが、読者にいくつかの違いを見出すことができるかどうかを確認します。 –

答えて

0

私は最終的に持っています問題を解決しました。問題は<meta charset="utf-8">でした。 私はまだ理解していませんが、<meta charset="utf-8">からheader('Content-type: text/html; charset=utf-8');に変更しました。今は問題なく動作しています。

関連する問題