[JavaScript]フォームスクリプト 10466 ワード JavaScript フォームスクリプト 1.フォーム1.1フォームの取得HTMLではフォームは要素で表されていますが、JavaScriptではフォームがHTMLFormElementタイプに対応しています.HTMLFormElementはHTMLElementを継承していますので、他のHTML要素と同じデフォルト属性を持っています.また、HTMLFormElementも独自の属性と方法があります.1)accept Charrset:サーバで扱える文字セット.2)action:要求を受け付けるURL.3)elements:フォーム内のすべての制御のセット.4)enctype:要求の符号化タイプ.5)length:フォーム内のコントロールの数.6)method:送信するHTTP要求タイプ.7)name:フォームの名前.8)Reset():すべてのフォームドメインをデフォルトにリセットします.9)submit():フォームを提出します.10)target:要求と受信応答を送信するためのウィンドウ名.「form」要素の参照を取得するには、ID属性を追加してからgetElementById()を利用して見つけるのが一般的です.var form = document.getElementById("myform"); 第二に、document.formsにより、ページ内のすべてのフォームを取得することができ、このセットでは、数値インデックスまたはname値によって特定のフォームを取得することができる.var firstForm = document.forms[0]; var myform = document.form["formname"]; 1.2フォームの提出ユーザが送信ボタンまたは画像ボタンをクリックすると、フォームが提出されます.またはを使って、提出ボタンを定義してもいいです.type属性を「submit」に設定すると、例えば、<input type="submit" value="Submit"/> <button type="submit">Submit</button> <input type="image" src="sub.jpg"/> フォームを送信すると、ブラウザは要求をサーバに送信する前にsubmitイベントをトリガします.このイベントのデフォルトの挙動を阻止すると、フォームの提出をキャンセルできます.例えば、var form = document.getElementById("myform"); EventUtil.addHandle(form, "submit", function(event) { event = EventUtil.getEvent(event); EventUtil.preventDefault(event); }); プログラムでsubmit()を呼び出す方法は、フォームを提出することもできます.例えば、var form = document.getElementById("myform"); form.submit(); 1.3フォームをリセットするユーザーがリセットボタンをクリックすると、フォームがリセットされます.type属性値が「reet」のinputまたは「button」を使ってリセットボタンを作成できます.例えば、<input type="reset" value="Reset"/> <button type="reset">Reset</button> フォームをリセットすると、すべてのフォームフィールドがページの読み込みが完了した直後の初期値に戻ります.リセットボタンをクリックしたユーザは、リセットを必要に応じてキャンセルすることができます.var form = document.getElementById("myform"); EventUtil.addHandler(form, "reset", function(event) { event = EventUtil.getEvent(event); EventUtil.preventDefault(event); }); submitを呼び出すのと同様に、JavaScriptによってフォームをリセットすることもできます.例えば、var form = document.getElementById("myform"); form.reset(); 1.4フォームフィールド元のDOM方法を使用してフォーム要素にアクセスすることができ、各フォームには、フォーム内のすべての要素のセット、例えば、elements属性があります.var form = document.getElementById("myform"); var field1 = form.elements[0]; var field2 = form.elements["textbox1"]; var fieldCount = form.elements.length; フォームコントロールが一つのname(単一選択ボックスのような)を使用している場合、そのnameによって名付けられたNodeListが返されます.「filedset」要素を除いて、すべてのフォームフィールドは同じ属性と方法のセットを持っています.1)disabled:現在のフィールドが無効にされているかどうかを示します.2)フォーム:現在のフィールドに属するフォームのポインタを指します.3)name:現在のフィールドの名前.4)readOnly:現在のフィールドが読み取り専用かどうかを示します.5)tabIndex:現在のフィールドの切り替え番号を表します.6)type:現在のフィールドの種類.7)value:現在のフィールドはサーバの値に提出されます.各フォームフィールドには2つの方法があります.focus()とblur().ここでfocus()メソッドは、ブラウザの焦点をフォームフィールドに設定するためのものであり、blur()メソッドの役割は、要素からフォーカスを移動することである.すべてのフォームフィールドは、3つのイベントをサポートしています.blur、change、focus.現在のフィールドがフォーカスを失うと、それぞれトリガが発生し、内容変更時にトリガが発生し、現在のフィールドがフォーカスを獲得するとトリガが発生します.2.テキスト枠のスクリプト2.1テキストの選択<input>と<textarea>は共にselect()の方法をサポートしています.この方法はテキストボックス内のすべてのテキストを選択するためのものです.例えば、var textbox = docuemnt.forms[0].elements["mytextbox"]; textbox.select(); テキストボックスでフォーカスを取得するときに、そのテキストを選択するのはよくあります.例えば、EventUtil.addHandler(textbox, "focus", function(event) { event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); target.select(); }); select()メソッドに対応するのは一つのselectイベントであり、テキストボックスのテキストが選択されると、selectイベントが発生します.selectイベントを通じて、ユーザーがいつテキストを選択したかは分かりますが、ユーザーがどのテキストを選択したかはまだ分かりません.これに対して基準が定められていないため、いくつかの事実基準が存在しています.その中で、Firefoxの案が一番認められています.Firefoxはテキストボックスに2つの属性を追加しました.この2つの属性の中には0に基づいた値が保存されています.選択されたテキストの範囲を表しています.function getSelectedText(textbox) { return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd); } Firefox、Safari、Chrome、およびOperaは、両方ともこの2つの属性をサポートしており、IEはサポートされていないが、ドキュメント・セレクションオブジェクトがあり、ここでは、ドキュメント全体の範囲でユーザが選択したテキスト情報が保存されている.function getSelectedText(textbox) { if (document.selection) { return document.selection.createRange().text; } else { return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd); } } テキストボックスのテキストの一部を選択するのは正常な動作ですが、関連規格はありません.同様に、Firefoxの解決策もこの場合の事実基準であり、つまり、すべてのテキストボックスにsets Selection Range()方法を追加している.この方法は、2つのパラメータを受け入れます.最初の文字の索引と最後の文字の後の文字の索引、例えば、textbox.setSelectionRange(0, textbox.value.length); Firefox、Safari、Chrome、Operaはこの方式をサポートします.IEは使用範囲選択部分テキストをサポートし、IEはテキストボックスにcreateTextRange()方法を提供し、テキストボックスのテキストの一部を選択するには、範囲を作成し、適切な位置に置く必要がある.次にmoveStart()とmoveEnd()を使用して範囲を所定の位置に移動します.これまではcollappse()を使用してテキストボックスの開始位置に範囲を折りたたむ必要があります.例えば、var range = textbox.createTextRange(); range.collapse(true); range.moveStart("character", 0); range.moveEnd("character", textbox.value.length); range.select(); 2.2フィルタ入力時々、すべてのキー操作を遮断するなど、ユーザーの入力を制御する必要があります.EventUtil.addHandle(textbox, "keypress", function(event) { event = EventUtil.getEvent(event); EventUitl.preventDefault(event); }); 特定の文字だけを遮蔽したい場合は、キーレスイベントを検出する必要があります.例えば、EventUtil.addHandle(textbox, "keypress", function(event) { event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); var charCode = EventUtil.getCharCode(event); if (!/\d/.test(String.fromCharCode(charCode)) && charCode > 9 && !event.ctrlKey) { EventUitl.preventDefault(event); } }); IEは、最初のサポートクリップボード関連イベントであり、JavaScriptを通じてクリップボードデータにアクセスするブラウザであり、IEは事実基準となり、Safari 2、Chrome、Firefox 3も同様のイベントをサポートする.以下は6つのクリップボードのイベントです.1)beforecopy:コピー操作が発生する前にトリガします.2)copy:コピー操作が発生したときにトリガします.3)beforecut:切取動作が発生する前にトリガします.4)cut:カット操作が発生したときにトリガします.5)beforepaste:貼り付け操作が発生する前にトリガします.6)paste:貼り付け操作が発生したときにトリガします.クリップボードのデータにアクセスするには、clipboardDataオブジェクトが使用できます.IEでは、このオブジェクトはwindowオブジェクトの属性であり、SafariとChromeでは、このオブジェクトは対応するイベントオブジェクトの属性である.しかし、FirefoxはclipboardDataオブジェクトに対応していません.またSafariとChromeでは、クリップボードのイベントを処理している間に、clipboardDataオブジェクトだけが有効です.このオブジェクトには3つの方法があります.get Data()、set Data()、clearData().ここではget Data()はクリップボードからデータを取得し、set Data()はデータを入れるために使用され、clearData()はデータを消去するために使用される.2.3焦点の切り替えユーザーが現在のフィールドを塗りつぶした後、自動的に次のフィールドにフォーカスを切り替えることで、フォームの使いやすさを向上させます.これはフォーカス切り替えの機能を使用します.例えば、(function() { function tagForward(event) { event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); if (target.value.length == target.maxLength) { var form = target.form; for (var i=0, len=form.elements.length; i<len; i++) { if (form.elements[i] == target) { form.elements[i+1].focus(); return; } } } } }) 3.枠スクリプトの選択3.1選択オプションフォームフィールドの共有属性に加えて、HTMLSelectElementタイプは、以下のような属性と方法を提供しています.1)add():コントロールに新しい要素を追加します.2)マルチプレイ:複数の選択肢が許可されているか.3)options:コントロール内のすべての要素のHTMLCollection.4)remove():指定された位置を削除するオプションです.5)selectedIndex:0に基づく選択項目の索引がない場合は-1となり、複数選択の場合は、最初の項目の索引のみを保存します.6)size:選択ボックスに表示される行数です.DOMでは、各要素にはHTMLOptionElementオブジェクトがあり、以下の属性が追加されています.1)index:現在のオプションは、オプティクスのセット内の索引です.2)label:現在のオプションのラベル.3)selected:現在のオプションが選択されているかどうかを示します.4)text:オプションのテキスト.5)value:オプションの値.選択された項目のみを許可する選択ボックスに対して、選択された項目にアクセスする最も簡単な方法は、選択ボックスのselectedIndex属性を使用することである.var selectedOption = selectbox.options[selectbox.selectedIndex]; 複数のオプションが選択できるオプションボックスについては、オプションの一つだけを有効にしているように、selectedIndexを設定すると、以前のオプションをすべてキャンセルして指定された項目を選択することができます.selectedIndexを読み込むと、選択された項目の最初のインデックス値だけが返されます.もう一つの選択肢は、ある項目に対する参照を取得し、そのselected属性をtrueに設定することです.例えば、selectbox.options[0].selected = true; 複数選択可能な選択ボックスにオプションのselected属性を設定すると、他の選択項目の選択はキャンセルされませんので、任意の複数の項目を動的に選択することができます.3.2オプションを追加JavaScriptを使って動的にオプションを作成し、選択ボックスに追加することができます.オプションを追加する方法はたくさんあります.最初はDOM方法を使用します.例えば、var newOption = document.createElement("option"); newOption.appendChild(document.createTextNode("Text")); newOption.setAttribute("value", "Value"); selectbox.appendChild(newOption); 第二の方法は、Optionコンストラクタを使用して2つのパラメータを受け入れることである.テキストと値、第二のパラメータはオプションである.例えば、var newOption = new Option("Text", "Value"); selectbox.appendChild(newOption); //IE 第3の方法は、選択ボックスのadd()を使用する方法であり、この方法は、2つのパラメータを受け入れる.追加する新しいオプションと新しいオプションの後に配置されるオプションは、リストの最後の項目に追加したいならば、第2のオプションをnullに設定し、IEでadd()方法の実装において、第2のパラメータはオプションである.また、新しいオプションの後にオプションのインデックスが必要ですので、互換コードは一つのパラメータだけを伝えることができません.例えば、2番目のパラメータのためにundefinedに入ることができます.var newOption = new Option("Text", "Value"); selectbox.add(newOption, undefined); 3.3削除オプション除去オプションも多くあります.第一の方法は、例えば、DOMのremoveChild()を使用することができます.selectbox.removeChild(selectbox.options[0]); 第二の方法は、選択ボックスのremove()を使用して、主に配信することができます.この方法は、パラメータを受け入れることができます.すなわち、オプションを削除するインデックス、例えば、selctbox.remove[0]; 3つ目は、対応するオプションをnullに設定します.例えば、selctbox.options[0] = null; 3.4移動オプションDOMのapendChild()法を使用して、第1の選択ボックスのオプションを第2の選択ボックスに直接移動できます.例えば、var selectbox1 = document.getElementById("mysel1"); var selectbox2 = document.getElementById("mysel2"); selectbox2.appendChild(selectbox1.options[0]); オプションの順序を並べ替えるプロセスも同様である.var optionToMove = selectbox.options[1]; selectbox.insertBefore(optionToMove, selectbox.options[optionToMove.index-1]); この記事は「青鋒ノート」のブログから、転載をお断りします. javascriptファイル読み込み管理の簡単な実現方法