ホームページ >ウェブフロントエンド >H5 チュートリアル >HTML5 フォーム タグを使用してフォーム検証を解放し、ファイルのアップロードを追加し、ドラッグ アンド ドロップを統合する_html5 チュートリアル スキルを使用する方法

HTML5 フォーム タグを使用してフォーム検証を解放し、ファイルのアップロードを追加し、ドラッグ アンド ドロップを統合する_html5 チュートリアル スキルを使用する方法

WBOY
WBOYオリジナル
2016-05-16 15:49:291731ブラウズ

HTML のフォームに関するもの

新しい属性

個人的な理解

フォーム

HTML5 より前は、フォームの下位要素をタグ内に配置する必要がありましたが、

タグに form タグを指定できるようになりました。

コメント: この関数は、実際に発生したいくつかの問題を解決します。たとえば、iframe が非同期画像アップロードをシミュレートする場合、画像はフォームの外に書き込む必要があります。

形成

フォームメソッド

この属性は、ボタン (送信) でフォーム送信ページを制御できるようにするために使用されます

formmethod は各ボタンの送信方法を指定します

プレースホルダー

この属性は、テキスト ボックスにプロンプ​​ト情報を表示するために使用されます。

リスト

list 属性は、テキスト ボックスに相当し、選択をシミュレートする datalist と一緒に使用する必要があります。

オートフォーカス

アクティブにフォーカスを取得するためのテキスト ボックスに使用され、便利なもの

さまざまなブラウザでサポートされていない入力属性を無料検証に追加します

電話

電話の場合

url

確認 URL

メール

メールを確認

日付/時刻

日付タイプの検証、日付選択プラグインが表示されます。 。 。

番号

は数字のみです

範囲

管理番号範囲

カラー

カラーピッカー、素晴らしいですね。 。 。

HTML5 では、フォーム関連の属性が多数追加されています。正直に言うと、これらは本当に考え抜かれたものです。 ! !大部分:

フォーム検証を完全に解放

互換性の問題を考慮していないのであれば、すぐにでも取り組みたいところですが、互換性の問題について考えると、非常に頭が痛くなるでしょう。 ! !

元々は良かったものが歴史的な理由で仕事量が増えるからです! ! !

間違った時に正しいことをしている彼は、正しく見えるし、実際も正しい。 。 。しかし、彼が間違っていることがわかるでしょう。 。 。 。

ページ要素を強化する

项目

个人理解

figure/figcaption

据说表示页面独立内容,移除后无影响,暂无发现用处..

details

该标签有点意思,用于替代js中,元素收起展开功能。

最新ff都不支持……个人觉得,既然提供了该标签应该提供属性表示上下展开或者左右展开;

mark

高亮显示,当真语义化

progress

屌丝们,可以告别gif图片了,也不用div模拟百分比了,与windows区域一致的进度条出现啦,异步文件上传更加完善!

改良ol

老夫就没有用过这个主。。。

……

プロジェクト 個人的な理解 図/図キャプション ページの独立したコンテンツを表すと言われていますが、削除されても影響はありません。 詳細 このタグはちょっと面白いです。js の要素の折りたたみと展開の機能を置き換えるのに使用されます。 最新のffでは未対応ですが… 個人的には、このタグがあるからには上下左右の展開を示す属性を付けるべきだと思います。 マーク 強調表示された、真にセマンティックな 進捗 ダイヤモンド、gif 画像に別れを告げることができ、パーセンテージをシミュレートするために div を使用する必要はありません。ウィンドウ領域と一致する進行状況バーが表示され、非同期ファイルのアップロードがより完璧になります。 改善されたol 私はこのマスターを使用したことがありません。 。 。 ……

上記の要素は必須の要素なので、詳しく説明する必要はありません。次に、この記事の主役である

を説明します。

ファイル API

FileList とファイル オブジェクト:

HTML4 では、file タグでは 1 つのファイルしか選択できませんが、HTML5 では、file タグに multiple 属性を設定すると、複数のファイルを選択できるようになります。 ! !

選択すると、ここで filelist オブジェクトが形成されます。これは、簡単に言えば、ファイルで構成されるオブジェクトのリストです。

ファイル オブジェクトには 2 つの属性があり、name はファイル名 (パスを除く) を表し、lastModifiedDate は最終変更時刻を表します

実際、HTML4 でファイルを操作すると、ファイルサイズなど多くのローカル属性を取得できますが、邪悪な IE はそれをサポートしておらず、IE9 以降は改善されました。

したがって、クライアントが大きすぎるファイルをアップロードするように求めた場合は、あきらめてください。 。 。

Blob オブジェクト

はバイナリ生データを表し、バイト内部生データにアクセスするためのスライス メソッドを提供します。サイズは BLOB オブジェクトのバイト長を表し、タイプはその MIME タイプを表し、タイプが不明な場合は空の文字列が返されます。

さあ、簡単な実験をしてみましょう:

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

ファイルについて



</title> ;<br /> <script src="../jquery-1.7.1.js" type="text/javascript"></script><br> <script type="text/javascript"> <br> $ (document).ready(function () {<br> $('#wl').click(function () {<br> var f = $('#file')[0];<br> <br> var s = '';<br> <br> });<br> });<br> </script><br> </head><br> <body><br> <input type="file" id="file" 複数 /><br> <button id="wl"><br> ファイルのアップロード</button><br> </body><br> < /html><br /> </div><br /></p> <p>ff で画像を選択したら、それを送信し、ブレークポイントを設定して見てみましょう: </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415535523.jpg" /></p> <p>ファイルの主人公が表示されます。それは彼です。その属性を出力して確認してみましょう: </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415535524.jpg" /></p> <p>本当にすべてが揃っています!ただし、このプロパティを使用してできることはたくさんあります。 。 。 IE7 と 8 を見てみましょう: </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415535525.jpg" /></p> <p>視聴者の皆様、私はこの属性をまったく持っていないので、すべてが万能です。 。 。 </p> <p><strong>ところで、IE ブラウザのデバッグは非常に面倒だと思いますが、ff の firebug や Google 独自のプラグインなど、何か良い IE 開発プラグインはありますか? ? </strong></p> <p> </p> <p><strong>FIleReader インターフェース</strong> </p> <p>ファイルリーダー インターフェイスは、ファイルをメモリに読み込むことができます。これにより、画像を快適にプレビューできますが、その有用性はそれを超えています。 </p> <p><strong>ファイルリーダーの 4 つのメソッド: </strong></p> <p>readAsBinaryString はファイルをバイナリ コードとして読み取ります。通常はデータをバックエンドに渡します。 </p>readAsText はファイルをテキストとして読み取ります - テキストの内容を読み取ります。 <p>readAsURL はファイルを DataURL として読み取ります (通常は小さなファイル、画像、または HTML)。 </p>ファイルが大きすぎて待ち時間が非常に長いため、abort は読み取りを中断します<p> </p> <p> </p><p>ファイルリーダーインターフェースイベント: </p><p> <strong>読み取り割り込みトリガーを中止します </strong> </p>読み取りが失敗したときにトリガーされるエラー <p> </p>onloadstart は読み取り開始時にトリガーされます。<p> </p>読み込み中です<p> </p>読み込みが成功すると onload がトリガーされます。<p> </p>onloadend は、成功または失敗に関係なく、読み取りの完了後にトリガーされます。 <p> 練習せずに話すだけでは不十分です。ここで少し実験してみましょう: </p><p></p><p><br /><br>コードをコピーします<div class="msgheader"><div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode5'));">コードは次のとおりです以下のように:<u><div class="msgborder" id="phpcode5"><br /> 私はちょっとした実験中です <br /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd"><br> <html xmlns="http://www.w3.org/1999/xhtml"><br> <head><br> <title>< ;/title><br> <script src="../jquery-1.7.1.js" type="text/javascript"></script><br> <script type="text/javascript "><br> $(document).ready(function () {<br> var bt = $('#wl');<br> var file = $('#file');<br> var type = $('#type');<br> var result = $('#result');<br> <br> var func = {};<br> func.readAsDataURL = function (file) {<br> //画像かどうかを検証<br> if (!/image/w /.test(file.type)) {<br>alert('非画像形式');<br> return false;<br> }<br> var Reader = new FileReader();<br> Reader.readAsDataURL(file);<br> Reader.onload = function (e) {<br> result.html('<img src="' this .result ' "/>');<br> }<br> }<br> <br> func.readAsBinaryString = function (file) {<br> <br> var Reader = new FileReader();<br> Reader.readAsBinaryString (file);<br> Reader.onload = function (e) {<br> result.html(this.result);<br> }<br> }<br> <br> func.readAsText = function (file) {<br> <br> var Reader = new FileReader();<br> Reader.readAsText(file);<br> Reader.onload = function (e) {<br> result.html(this.result );<br> }<br> }<br> <br> bt.click(function () {<br> if (func[type.val()] && typeof func[type.val()] == ' function') {<br> func[type.val()](file[0].files[0]);<br> }<br> });<br> <br> });<br> < ;/script> ;<br> </head><br> <body><br> <div id="result"><br> </div><br> <input type="file " id= "file" 複数 /><br> <select id="type"><br> <option value="readAsDataURL">readAsDataURL</option><br> <option value=" readAsBinaryString"> ;readAsBinaryString</option><br> <option value="readAsText">readAsText</option><br> </select><br> <button id="wl"><br> ファイルの読み取り</button><br> <br> </body><br> </html><br> </div> <br> <p>最新のブラウザを使用して試してください。 </p> <p>もう一度判断して、イベントの実行順序を見てみましょう: </p> <p>reader.onload = function(e){<br>alert( 'onprogress');<br>reader.onerror.onloadstart = function(e){<br>alert( 'onloadstart'); > <br><br>ここでの具体的なアプリケーション: <br><br><br><br> <br><br><br><br><br></p>コードをコピーします<p><strong><br>コードは次のとおりです:<img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415535526.jpg"><div class="msgborder" id="phpcode6"> <br> 简单图片上传 <br> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br> <html xmlns="http://www.w3.org/1999/xhtml"><br> <head><br> <title>








<ボタンの種類=" button" id="submitForm">画像をアップロード




ドラッグ 実は API を入れる前に、jquery を使ってドラッグ アンド ドロップのプラグインも書きました。 。

仕事中に遭遇したいくつかのこと [ポップアップ ウィンドウ] [ドラッグ アンド ドロップ] [非同期ファイルのアップロード]

しかし、HTML5 への統合の方が確実に優れています。 ! !では、この内容を見てみましょう。 。 。そして、その威力はブラウザ内でのドラッグだけではありません。これは驚くべきことです (画像をドラッグしてアップロードします)

HTML5 では、デフォルトで画像とリンクをドラッグ アンド ドロップできます。ドラッグ アンド ドロップするには、他の要素を draggable="true" に設定する必要があります。早速試してみます。

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

拖放の例




< /title><br> <br> </head><br> <body><br> <div id="dragme" draggable="true" style=" width: 200px; border: 1px ソリッド グレー; ">请拖放</div><br> <div id="text" style="幅: 200px; 高さ: 200px; ボーダー: 1px ソリッドグレー;"></div><br> <script type="text/javascript"><br> document.ondragover = function (e) {<br> e.preventDefault();<br> };<br> document.ondrop = function (e) { <br> e.preventDefault();<br> };<br> <br> var source = document.getElementById('dragme');<br> var dest = document.getElementById('text');<br> source.addEventListener('dragstart', function (e) {<br> var dt = e.dataTransfer;<br> dt.setData('text/plain', '您好' new Date());<br> } 、 false);<br> <br> dest.addEventListener('dragend', function (e) {<br> e.preventDefault();<br> }, false);<br> <br> dest.addEventListener( 'drop', function (e) {<br> var dt = e.dataTransfer;<br> var text = dt.getData('text/plain');<br> dest.innerHTML = text;<br> e. stopPropagation();<br> e.preventDefault();<br> return false;<br> }, false);<br> <br> </script><br> </body><br> < ;/html><br> </div> <p><img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415535527.jpg"></p> <p>放任時期は必ず停止し、新しい開口部が開くかどうかを確認するために実行されます。その中で以下が注目です:</p> <p>1 拖放は DataTransfer 転送データを使用できます。このオブジェクトは常に有用です。実行中に他の要素を通過する可能性があるため、私たちはこの転送情報を使用できます。</p> <p><strong>API:</strong></p> <p>dragstart <span style="COLOR: #ff0000">被拖放元素</span> 開始拖放時間</p> <p>ドラッグ<span style="COLOR: #ff0000">被拖放元素</span>拖放过中</p> <p>dragenter <span style="COLOR: #ff0000">拖放進行中ネズミ标经过的要素</span> 被拖放要素開始開始本元素時</p> <p>dragover <span style="COLOR: #ff0000">拖放过中鼠标经过的元素</span> 本元素内移動</p> <p>drageleave <span style="COLOR: #ff0000">拖放过中鼠标经过的元素</span> 离开本元素</p> <p>drop <span style="COLOR: #ff0000">拖放的目标元素 <span style="COLOR: #000000">拖動的元素放了本元素中</span></span></p> <p>dragend 拖放的对象 拖放结束</p> <p> ただし、ここには問題があり、二次的な重点研究対象となり得る、さまざまな元素を介して神害が発生する可能性について、初期段階からの深い研究をやめていません。 </p> <p>结语 <strong></strong> </p>html5 の文件と表作の比較精緻、個人感觉比布局新纪标签有用多了、明天始学习キャンバス、虽然不懂、虽然见过、但是感觉害的样子! <p></p> </td> </table></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="HTML5 描画画像 (パート 1): 次世代の Web ページをリードする Canvas 要素に関する問題_html5 チュートリアル スキル" href="https://m.php.cn/ja/faq/6315.html">HTML5 描画画像 (パート 1): 次世代の Web ページをリードする Canvas 要素に関する問題_html5 チュートリアル スキル</a></span><span>次の記事:<a class="dBlack" title="HTML5 描画画像 (パート 1): 次世代の Web ページをリードする Canvas 要素に関する問題_html5 チュートリアル スキル" href="https://m.php.cn/ja/faq/6319.html">HTML5 描画画像 (パート 1): 次世代の Web ページをリードする Canvas 要素に関する問題_html5 チュートリアル スキル</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/348281.html" title="AlloyTouch 全画面スクロール プラグインは 30 秒で滑らかな H5 ページを作成します" class="aBlack">AlloyTouch 全画面スクロール プラグインは 30 秒で滑らかな H5 ページを作成します</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348372.html" title="HTML5の実戦とタッチイベント解析(touchstart、touchmove、touchend)" class="aBlack">HTML5の実戦とタッチイベント解析(touchstart、touchmove、touchend)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348373.html" title="HTML5 Canvas 9での画像描画例を詳しく解説" class="aBlack">HTML5 Canvas 9での画像描画例を詳しく解説</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348374.html" title="正規表現と新しい HTML5 要素" class="aBlack">正規表現と新しい HTML5 要素</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/348469.html" title="NodeJS と HTML5 を組み合わせて複数のファイルをドラッグ アンド ドロップしてサーバーにアップロードする方法" class="aBlack">NodeJS と HTML5 を組み合わせて複数のファイルをドラッグ アンド ドロップしてサーバーにアップロードする方法</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>