2012-03-09 4 views
0

を[送信]ボタンをトリガー:私は、テキスト入力ボックスに入力したキーを押すとたonPressイベントは、私が登録プロセスの一環として、次の形式を持っているページ全体のために

  <form class="form1" id="register_form1" method="POST" action="<?php echo $register_url; ?>" name="register_form1"> 

      <!-- other parts of the form that are not relevant to this question -->    
      <!-- text input area to conduct a search --> 
      <span style="text-align: left; width: 100%;margin-left:40px;">Select a primary recruiter</span> 
      <div class="ansDiv"> 
      <table style="float: left;"> 
       <tr> 
       <td> 
       <input type="text" id="primary_recruiter" name="primary_recruiter" value="" onkeypress="searchKeyPress(event);"> 
       </td> 

       <td> 
       <input type="button" id="buttonSearch" value="" class="button_search" name="seachprimary" onclick="javascript: searchRecruiter();"> 
       </td> 

       <td> 
       <a class="highlight" href="../images/PrimaryRecruiter.gif" style="float: right; padding-right: 655px;"> 
       <img src="../images/Q-btn.png"> 
       </a></td>      

       <td> 
       <input type="hidden" id="primary_recruiter_id" name="primary_recruiter_id" value=""> 
       </td></tr> 
      </table>    

      <!-- last part of the form that is not relevant to this question --> 

      <!-- Submit button for the page itself. --> 
      <p align="center"> 
       <input type="submit" class="button_submit" name="register1_submit" value="" /> 
      </p> 
      </form> 

      And here's the javascript I have setup to implement a button press on Enter: 


      <script type="text/javascript"> 

      function searchRecruiter(){ 
      var temp = $("#primary_recruiter").val(); 
       $.ajax({ 
        type : 'GET', 
        url : 'searchrecruiter.php', 
        data: "name="+temp, 
        success : function(data){ 
        $("#displayrecruiterlist").html(data); 
        }//end function(data) call 
       });//end $.ajax call 
      }//end searchRecruiter 

      //other java scripts 
      </script> 


      <!-- Press enter to search... -->  
       <script type="text/javascript"> 
       function searchKeyPress(e){ 

        // look for window.event in case event isn't passed in 
        if (typeof e == 'undefined' && window.event) { e = window.event; } 
        if (e.keyCode == 13){ 
         document.getElementById('buttonSearch').click(); 
        }    
       } 
      </script> 

、私が文書に終わるん.getElementByID( 'buttonSearch')。クリック();そのように働く。しかしそれは ページは私がid属性を持たないsubmitをクリックしたかのように応答します。

検索ボタンをクリックすると、期待通りに機能します。私は間違って何をしていますか?私は、その検索ボタンにクリックを送信していると思った。 それは私が持っているレスポンスではない。

ありがとうございました。

私はウェブ開発(PHP、JavaScriptなど)を初めて使い、仕事を学んでいます。 私が提供する必要があるものが他に必要な場合は教えてください。

+0

少なくとも、余分な空白行からコードを削除することができます。「searchKeyPress」では、ENTERの元のヒットをキャンセルする必要があります。 – Teemu

+0

これはもう一つの注意点でしたが、私はこのコードを最初に書きませんでした。入力の元のヒットをキャンセルするにはどうすればよいですか?追加することは**偽を返しますか?** _after_click()コールはそのトリックを行いますか? :::試しています::: – Waddler

+0

試行に失敗しました。私が知っている理由は、空のフィールドのアラートが私がenterを押すと消されるのですが、ボタンを直接クリックすると正常のように動作します。 – Waddler

答えて

1

テキスト入力フィールドでEnterキーを押すと、親フォームが送信されます。検索フィールド/ボタンは実際には(AJAX呼び出しでデータを取り出す)独自の機能を実行しているため、おそらくフォームの内部にあるべきではありません。これらのアイテムを取り出してフォームタグの外に置くことをお勧めします。それはあなたの問題を解決するだろう。

もう1つのオプションは、onkeypressイベントでfalseを返すことです。

FYI、onclick = ""はjavascriptの構文なので、最初のjavascript:は暗黙で不要です。

+0

FYIのおかげで、私はそれを得るでしょう。 return falseを追加しました。 .click()呼び出しの後には、以前と同じ効果がありました。関数の最後に置いたときと同じ効果がありました。 私はそれを独自のフォームに設定しようとしましたが、失敗しました。 – Waddler

+0

これは、顧客がページを機能させる方法です。 – Waddler

+0

「お客様がページを機能させたいと思っている方法」とは何を意味するのかよくわかりません。あなたは彼らがフォーム提出の一部として検索テキストを望んでいると言っていますか?入力フィールドとボタンをフォームから抜き出してフォームの外に置くことを提案していましたが、*別のフォームの中には入れないようにしてください...(もちろん、フォームの一部であるために検索テキストを必要としない限り提出)。入力欄の中でEnterキーを押すと、それが含まれているフォームが送信されます。フォームに入力しないと、この問題は発生しません。 –

関連する問題