
初めて質問させていただきます、初心者プログラマーです。
web上で使用する、質問用入力フォームを作成しているのですが、
セキュリティの問題上、入力フォーム内にタグが打ち込まれたとき
それを無効化するために、タグ開始と終わりのカッコがそのまま
スルーしないよう、アンパーサンドlt;とアンパーサンドgt;に
置き換える処理を行いたいと思うのですが、どのように記述したら
よいのかがわかりません。この処理はフォームの入力欄全てに対して
有効にしたいのですが、どのように記述したらよいのでしょうか…
どうかご教授お願い致します。
No.2ベストアンサー
- 回答日時:
<や>を<や>に変えるには、replaceメソッドを使います。
HTMLのサンプルを載せますので、参考にしてみて下さい。
(IE&NN動作確認済み。そのままコピペできます。)
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
var names = new Array('t1', 't2', 'ta');
function check()
{
with (document) {
for (var i in names) {
f[names[i]].value = f[names[i]].value.replace(/</g,"<");
f[names[i]].value = f[names[i]].value.replace(/>/g,">");
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="f">
<INPUT type="text" name="t1" size="50"><BR>
<INPUT type="text" name="t2" size="50"><BR>
<TEXTAREA name="ta" cols="50" rows="8"></TEXTAREA><BR>
<INPUT type="button" name="b" value="check" onClick="check()"><BR>
</FORM>
</BODY>
</HTML>
解析も勉強のうちですので、頑張って解析してくださいね。
下記のサイトも勉強には欠かせません。
この回答への補足
ご回答ありがとうございます!早速試して、実行できました。
早急に解決しなければならない問題だったので、とても助かりました。
本当にありがとうございます。
ただ、後ひとつだけ質問してもよろしいですか?
今現在、入力フォームのsubmitボタンでonClick時処理としてすでに
以下のallcheck()を呼び出しています。
function allcheck(){
if(check_roman(document.form1.mail1.value)==false){
return false;
}
if(check_roman(document.form1.mail2.value)==false){
return false;
}
if(bytecheck(document.form1.text.value)==false){
return false;
}
}
//allcheck内で呼び出しているスクリプト
function check_roman(strTarget){
var i,transTarget;
var checkStr=new String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.1234567890");
transTarget=strTarget.replace(/ /g,"");
for(i=0;i<transTarget.length;i++){
if(checkStr.indexOf(transTarget.charAt(i),0)==-1){
alert("メールアドレスは半角英数字で");
return false;
}
}
return true;
}
//allcheck内で呼び出しているスクリプト
function bytecheck(){
txt = document.form1.text.value;
n = txt.length;
if (n > 2000){
alert("問合せ内容は2000文字以内で");
return false;
}
return true;
}
このallcheckスクリプトの中に、教えていただいたcheckスクリプトの
呼出を加えるとすると、どのように記述したらよいのでしょうか・・・。
何度も申し訳ありませんが、ご教授いただけると幸いです。
どうか、よろしくお願いいたします
補足内に書いたallcheckの一番下に、check();の一行を記述して、
無事にすべて解決しました。
よく考えずに質問ばかりしてすみませんでした。
今後とも精進し、プログラムを自分の手でバリバリ一から書けるように
がんばります。
ご回答いただき本当にありがとうございました。
No.1
- 回答日時:
置き換えに関しては、下記のようにすればできます。
function replaceValue(){
ver strValue=document.***.***.value;
↑ここは、入力された値が入るように変えてください。
res1=strValue.indexOf("<",0); //文字列中から<を検索
res2=strValue.indexOf(">",0); //文字列中から>を検索
if(res1 != -1){ //該当がなければ-1が返るので
strMsg=strValue.replace("<","&lt;"); //<を<に置き換え
}
if(res2 != -1){ //該当がなければ-1が返るので
strMsg=strValue.replace(">","&gt;"); //<を<に置き換え
}
}
# サンプル中の"&lt;"と"&gt;"は大文字で書かれていますが、実際は小文字です。
後は、この関数をどう呼ぶかを考えてみてください。
例えば、全部入力が終わった後にボタンを押して、ならそのボタンのonClickに設定すればいいし、入力後であれば、その入力フォームのonBlurまたはonChangeに設定すればOKです。
(ただし、onBlurまたはonChangeに関しては、ブラウザによって動作が異なる可能性があります)
ご回答ありがとうございます!
とても詳しく解説してくださり、本当にありがとうございました。
おかげで、非常に参考になりました。
今後とも精進していこうと思います。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文末の改行コードを削除したい
-
JQueryで2つのテキストフィー...
-
javascriptで入力フォームが空...
-
特定<table>内の<td>の色を変える
-
return trueとreturn falseの用...
-
onchangeイベントを強制的に発...
-
C言語クイックソートの比較総回...
-
slickのレスポンシブ > center...
-
ラジオボタンが選択されたらテ...
-
JavaScript ラジオボタン デ...
-
VBSでブラウザ上のテキストボッ...
-
ハイパーリンクを別ウインドウ...
-
ASP.NETでNAME属性を固定にしたい
-
tabindexの取得
-
javascriptでASPにデータを渡す
-
アンダーバーのname値は取得で...
-
ポップアップブロックにならな...
-
C#(csファイル)とjavascriptと...
-
HTMLコンボボックスへの項目追加
-
selectを変更不可にしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件により、リンク先に画面遷...
-
JSPとJavaScriptの連携について...
-
onClickとsubmitの処理順序
-
javascriptで入力フォームが空...
-
文末の改行コードを削除したい
-
日付入力欄の表示形式を自動的...
-
テキストボックス入力を半角英...
-
Webブラウザにてページのりロー...
-
テキストボックスを無効にする...
-
JQueryで2つのテキストフィー...
-
入力モード 自動 切り替え
-
HTMLで入力したものを変数で扱...
-
フォームの<TEXTAREA>で文字数...
-
PDFフォームで条件つき金額を表...
-
数字の1文字目を消したい
-
イベント発生時に入力待ち状態...
-
入力した文字を大文字に変換し...
-
submit後、同じ入力欄に戻らせ...
-
フォームから入力すると、入力...
-
Javascriptで同じ数字を2回打...
おすすめ情報