0

現在、Ajax検索の提案入力に取り組んでおり、これで完了ですが、提案を選択してフォームを自動送信するときにこのスクリプトを作成したいだけです。

これが私のJavascriptです:

<script>
function suggest(inputString){
    if(inputString.length == 0) {
        $('#suggestions').fadeOut();
    } else {
    $.ajax({
      url: "autosuggest.php",
      data: 'act=autoSuggestUser&queryString='+inputString,
      success: function(msg){
            if(msg.length >0) {
                $('#suggestions').fadeIn();
                $('#searchBoxSuggestions').html(msg);
                $('#country').removeClass('load');
            }
      }
    });
    }
}
    function fill(thisValue) {
    $('#keyword').val(thisValue);
    setTimeout("$('#suggestions').fadeOut();", 600);
}
function fillId(thisValue) {
    $('#country_id').val(thisValue);
    setTimeout("$('suggestionsBox').fadeOut();", 600);
}

</script>

ここに私のHTMLフォームがあります:

          <form method="get" action="search.php" autocomplete="on" name="form_search">
  <input type="text" size="25" value="" id="keyword" name="keyword" onkeyup="suggest(this.value);" onblur="fill();fillId();" class="" />
 <input type="hidden" name="country_id" id="country_id" value="" />
 <input type="submit" value="&nbsp;" id="searchbutton" />
 <div class="suggestionsBox" id="suggestions" style="display: none;"> 
 <div id="searchBoxSuggestions"> &nbsp; </div>
 </div>
          </form>

そして、必要に応じて autosuggest.php を実行します:

<?php
if(isset($_REQUEST['act']) && $_REQUEST['act'] =='autoSuggestUser' && isset($_REQUEST['queryString'])) {
   $db_host = 'localhost';
   $db_user = 'root';
   $db_password = 'mypass';
   $db_name = 'mydb';

   $connect = mysql_connect($db_host, $db_user ,$db_password);
   $db = mysql_select_db($db_name,$connect);
   mysql_query("SET NAMES utf8");
   if($db){
    $string = '';
        $queryString = $_REQUEST['queryString'];
        $query = "SELECT * FROM videos WHERE title like '%" .$queryString . "%' and approved='yes' ORDER BY title LIMIT 10";
        $resource = mysql_query($query);

        if($resource && mysql_num_rows($resource) > 0) {
        $string.= '<ul>';
            while($result = mysql_fetch_array($resource)){
            $title= addslashes($result['title']);
            $indexer= addslashes($result['indexer']);
                $string.= '<li onClick="fillId(\''.$indexer.'\');fill(\''.$title.'\');"><b>'.$title.'</b></li>';
            }
        $string.= '</ul>';

        } else {
            $string.= '<li>No Record found</li>';
        }
        echo $string;       
        exit;

   }
   exit;
}

?>

このコードを使用して入力フィールドに名前を入力すると、keyword次のようなタイトルの候補が表示されます。

提案されたタイトルをクリックすると、入力している入力フィールドにそのタイトルが入力され、送信ボタンを押すと検索が開始されます。

そのタイトルを入力に入れるのではなく、タイトルをクリックしたときにフォームを自動送信するようにするにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

0

Give a click event to your searchBoxSuggestions div:

$("#searchBoxSuggestions").click(function() {
    $(this).closest("form").submit();
});
于 2013-11-11T20:50:02.907 に答える