検索
ホームページウェブフロントエンドjsチュートリアル入力ボックスに Baidu と同様の検索プロンプトを実装させます (jquery イベント監視に基づく)_jquery

Baidu と Google は何年も前からこのエフェクトを実装しているようですが、このエフェクトを実現するコードはインターネット上で簡単に見つかると思いました。このニーズに実際に直面したとき、本当にそれを見つけることができないことがわかりました。したがって、このエフェクトをフレームワーク全体に統合したので、個別にカプセル化することはありませんでした。

要件:
Baidu 検索と同様に、プロンプト付きの入力ボックスを実装して、変更があった場合によく使用されるキーワードを取得します。データはシステム データベースから取得され、マウス選択またはキーボード選択をサポートします。

アイデア:
フレームワークの一貫したアイデアは、監視の入り口としてクラスを使用し、データ送信としてデータを使用することです。
リアルタイムの変更監視は、入力イベントとプロパティ変更イベントを監視することによって実現されます。主流の propertychange はつまり、ご存知のとおり ;
Ajax を介して post アクションを実装し、返されたコンテンツを選択ボックスに似た形式で表示します。
上キー (38)、下キー (40) を監視します。 、キーボードのキー (13) を入力し、 keydown をバインドして、event.keycode の実装を決定します。
マウスのマウスオーバー イベントとクリック イベントを監視します。これはキーボードのアクションと完全に統合されている必要があります。入力コンテンツの要件は既知のオプションと一致している必要があり、ブラー イベントを監視してフォーカス変更が許可されているかどうかを判断します。
実装コード:

コードをコピー コードは次のとおりです:

//COoL による

//プロンプト層を保存するグローバル変数を定義します
var liketips;

//変更をリッスンするか、フォーカス イベントを取得します

//Chrome および Firefox ブラウザーに付属の自動プロンプトを無効にします
$('.getsearchjson').attr("autocomplete", "off");
$('.getsearchjson').bind ( "propertychange input focus",function(event){
$this=$(this);
if(event.type!='focus'){
// 変更がある場合、ステータスは に設定されています。純粋な手動入力では値を挿入できないため、再度選択する必要があります。
$this.data('ok',false)
}

/ /入力ボックスの位置を取得し、表示されるプロンプト レイヤーを計算します。 Position
var top=1*$this.offset().top 25;
var width=1*$this.width( ) 12;

//ストレージチップレイヤーを再構築し、適切な位置に表示します
$(liketips).remove(); liketips=document.createElement('div');
$liketips=$(liketips);
//ここではクラス スタイルは提供されません、最も重要なことはposition:absoluteです
$liketips.addClass( "liketips");
$liketips.css({top: top 'px',left:left 'px',width:width 'px'});

//読み込み中の動的画像を表示ロード前
$liketips.append('入力ボックスに Baidu と同様の検索プロンプトを実装させます (jquery イベント監視に基づく)_jquery');
$liketips.appendTo($this.parent()) ;
$liketips.show();

// json を取得するための ajax を定義します。type パラメーターは data-type で設定され、キーワードはこれまでに入力された値です
//戻り値を表形式で表示
$.post('/data/search.do ',{type:$this.data('type'),keyword:$this.val()},function (json){
$liketips.empty();
var htmlcode=""; 0;i //ここで value と title を使用する必要があるため、data-value を使用してもう 1 つのパラメーターを渡し、Enter またはキーを押した後に対応する場所に値を割り当てます。マウスクリック。 select
htmlcode ='
'; ;/tbody>
' json.datas[i][1] ' を完全に置き換えます。
このドロップダウン ボックスでを必ず選択してください;
//読み込みを置き換えますコンテンツを含む動的画像
$liketips.html(htmlcode) ;
},"json")
});

// フォーカスが消えたら、データが次のものであることを確認します。オプションを選択してプロンプトボックスを非表示にします。
$('.getsearchjson').blur( function(){
//マウスがクリックされた場合、ぼかしアクションはクリック前に確定するため、setTimeout でこの問題を解決します。
$ oldthis = $(this); ');
$oldthis.focus(););

//キーボード操作を監視します
$('.getsearchjson').keydown(function(event){
//console.log(event.keyCode);
$this =$(this);
if(event.keyCode==40){
//キーが押されています
$nowtr=$('tr.selectedtr');
//選択がある場合は下に進み、そうでない場合はメニューの最初の
を選択します if($nowtr.length>0){
$nexttr=$nowtr.next('tr')
最後のオプションは次の tr に移動します。そうでない場合は最初の tr にジャンプします。 tr:first' ).addClass('selectedtr');であればすでに選択されている場合は下に進み、それ以外の場合はメニューの最初の
を選択します if($nowtr.length>0){
$prevtr=$nowtr.prev('tr')
// である場合最後のオプションではない場合は、次の tr に移動します。そうでない場合は、最初の tr にジャンプします。
prevtr.addClass ('selectedtr') ('tr:last ').addClass('selectedtr');
; > selectedtr');
if($nowtr.length==1){
//パラメータ data-valueto を介して入力ボックスで構成された値ストレージ項目に値を設定します (通常は非表示項目 $valuefield=$('input[name=' $this.data('valueto') ']');
$valuefield.val($nowtr.data('value')); text());
).fadeOut('fast');
return false;
//console.log(event.keyCode);
return true;

//マウスオーバーにより選択された項目が変更されます
$(document) ). delegate('.liketips td','mouseover',function(){
$nowtr=$(this).parent();
$nowtr.siblings('tr').removeClass();
$nowtr.addClass('selectedtr');
});

//マウスの動きを聞き、クリックして選択します
$(document).delegate('.liketips td' ,'click ',function(){
$nowtr=$(this).parent();
if($nowtr.length==1){
// に対応する入力ボックスを取得しますプロンプトレイヤー
$ inpurtr.parent()。parent()。 =$('input[name=' $inputfield.data('valueto') ']');
$valuefield.val($nowtr.data ('value'));
$inputfield.val( $nowtr.text());
$inputfield.data('ok', true);
}
$(liketips).fadeOut('fast');



CSS はここでは公開されません。私の実装は次のとおりです:




入力ボックスに Baidu と同様の検索プロンプトを実装させます (jquery イベント監視に基づく)_jqueryコードをコピーします

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
vue3怎么封装input组件和统一表单数据vue3怎么封装input组件和统一表单数据May 12, 2023 pm 03:58 PM

准备工作用vuecreateexample创建项目,参数大概如下:用原生input原生的input,主要是value和change,数据在change的时候需要同步。App.tsx如下:import{ref}from'vue';exportdefault{setup(){//username就是数据constusername=ref('张三');//输入框变化的时候,同步数据constonInput=;return()=>({

laravel input隐藏域怎么实现laravel input隐藏域怎么实现Dec 12, 2022 am 10:07 AM

laravel input隐藏域的实现方法:1、找到并打开Blade模板文件;2、在Blade模板中使用method_field方法来创建隐藏域,其创建语法是“{{ method_field('DELETE') }}”。

PHP开发:如何实现搜索关键词提示和自动补全功能PHP开发:如何实现搜索关键词提示和自动补全功能Sep 21, 2023 pm 01:01 PM

PHP开发:实现搜索关键词提示和自动补全功能在现今互联网时代,搜索引擎已经成为人们获取信息的重要渠道之一。而在网站开发中,搜索功能的重要性不言而喻。为了提升用户体验和搜索效果,实现搜索关键词提示和自动补全功能是一项非常有价值和必要的开发任务。本文将为大家介绍如何在PHP开发中实现搜索关键词提示和自动补全功能,并提供具体的代码示例。搜索关键词提示是指在用户输入

在JavaScript中,"oninput"事件的用途是什么?在JavaScript中,"oninput"事件的用途是什么?Aug 26, 2023 pm 03:17 PM

当在输入框中添加值时,就会发生oninput事件。您可以尝试运行以下代码来了解如何在JavaScript中实现oninput事件-示例<!DOCTYPEhtml><html>&nbsp;&nbsp;<body>&nbsp;&nbsp;&nbsp;<p>Writebelow:</p>&nbsp;&nbsp;&nbsp;<inputtype="text"

点击input框没有光标怎么办点击input框没有光标怎么办Nov 24, 2023 am 09:44 AM

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;​5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。

Vue文档中的input框绑定事件详解Vue文档中的input框绑定事件详解Jun 21, 2023 am 08:12 AM

Vue.js是一种轻量级的JavaScript框架,具有易用、高效和灵活的特点,是目前广受欢迎的前端框架之一。在Vue.js中,input框绑定事件是一个十分常见的需求,本文将详细介绍Vue文档中的input框绑定事件。一、基础概念在Vue.js中,input框绑定事件指的是将输入框的值绑定到Vue实例的数据对象中,从而实现输入和响应的双向绑定。在Vue.j

Vue文档中的input框回车事件和验证函数使用方法Vue文档中的input框回车事件和验证函数使用方法Jun 20, 2023 am 09:13 AM

Vue是一个流行的JavaScript前端框架,它的核心是响应式数据绑定和组件系统。在Vue的应用程序中,input框是最常用的UI元素之一。在用户输入文本时,我们希望可以监听回车事件,并且在提交前对输入内容进行验证。本篇文章将介绍Vue文档中的input框回车事件和验证函数使用方法。一、Vue中input框回车事件在Vue中监听input框的回车事件非常简

jquery中input是什么元素jquery中input是什么元素Jun 06, 2023 pm 02:18 PM

jquery中input是选择器选取表单元素,其作用是:1、input用于搜集用户信息,根据不同的type属性值,输入字段拥有很多种形式,输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等;2、input标签可定义输入域的开始,在其中用户可输入数据;3、使用input标签来进行定义,其中包括文本字段、多选列表、可单击的图像和提交按钮等。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)