• ベストアンサー

HTMLのテキストボックスへのドラッグ&ドロップについて

HTMLのテキストボックスに文字列(テキスト)をドラッグ&ドロップしたときに、イベントを発生させたいのですが分かりません。 <INPUT TYPE="text" NAME="test" VALUE="" ondragdrop="alert('test!')"> というのを作ってみましたが、ondragdropはファイルにしか対応していないみたいなので無理でした。 ondragoverは反応しましたが、マウスを離す前にイベントが発生するため、こちらの意図する動作にはなりません。 やはりそういうイベントハンドラは用意されていないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#137826
noname#137826
回答No.2

テキストをドラッグするテストをしていませんでした。すみません。 確かに動きませんね。 これでどうでしょう? --- var t = { text: '', mousedown: 0 } window.onload = function(){ var input = document.getElementById('test'); t.text = input.value; input.onmouseover = function(){ if (t.mousedown && t.text != this.value) { t.text = this.value; alert('dropped'); } } input.onchange = function(){ text = this.value; } document.onmousedown = function(){ t.mousedown = 1; } document.onmouseup = function(){ t.mousedown = 0; } } ---

rigard1225
質問者

お礼

できました^^ いやいや、色んな方法があるんですね^^ 勉強になります。 何度もありがとうざいました。

その他の回答 (1)

noname#137826
noname#137826
回答No.1

こんなのはどうでしょう? <input type="text" id="test" value=""/> window.onload = function(){ var input = document.getElementById('test'); input.onmouseover = function(){ this.setAttribute('set',''); } input.onmouseout = function() { this.removeAttribute('set'); } input.onmousedown = function() { this.removeAttribute('set'); } input.onmouseup = function() { if (this.hasAttribute('set')) { alert('dropped'); } } }

rigard1225
質問者

お礼

ご回答ありがとうございます。 試してみましたが、うまくいきませんでした。 alertをはさんだりして調べてみたところ、テキストをドラッグしている状態だとonmouseupのイベントが発生しないようです。 普通に、何もドラッグせずにマウスのクリックを外しただけなら、イベントが発生しました。 ボクの環境や記述がおかしいのでしょうか? kaorineさんのところではうまく動きますか? 自分はIE7を使ってるんですが(質問時に書くべきでしたねm(__)m)、ブラウザで違うんですかね? ただ考え方自体はすごいなぁと感心しました。 setAttributeを使うなんて思いつかなかったです^^ ありがとうございました。

関連するQ&A

  • ボタンを押すとテキストボックスが増えるJavaScriptについて教えてください

    Javascriptで質問です。 <input type="text" name="hoge1" value=""> <input type="text" name="hoge2" value=""> <input type="text" name="hoge3" value=""> というようなテキストボックスがあり、「追加」というボタンを押すと 新たなテキストボックス <input type="text" name="hoge4" value=""> が追加されるようなJavascriptを作成したいと考えています。 新たに作られたテキストボックスには name="hoge4" name="hoge5" ・ ・ ・ というように、nameの部分に「hogeの右にある番号に1ずつ加算された名前」を付けていきたいのです。 検索すると、テキストボックスを追加していくだけのサンプルはいくつかあったのですが、nameの部分を加算していく、という例が無くて行き詰っています。 よろしくお願いいたします。

  • MFCのドラッグ&ドロップについて

    閲覧して頂きありがとうございます。 現在、WindowsXPでvc++6.0のMFC(ダイアログベース)を利用してダイアログを作り エディットボックスに入力されたファイルパスを利用して指定のファイルを 開く簡単なアプリを作ろうとしています。 そこでダイアログのエディットボックスの部分にファイルをドラッグ&ドロップすると エディットボックスにドロップされたファイルのパスを表示させようとしていますが、中々できません。 状況としては、グループボックスの中にエディットボックスを作成し、 グループボックスを右クリック→プロパティ→ドラッグドロップを許可 をすることによりグループボックスにドロップの許可を与えることはできていますが ドロップのイベントを拾うことができておりません。 ※参考サイトなどをみると「WM_DROPFILES」というハンドラがあるみたいなのですが  どこにも見当たらないです。。。 何か不明な点などあれば補足させて頂きますので、よろしくお願いします。

  • テキストボックスの初期値について

    テキストボックスに初期値を入れたいときは <input name="text1" type="text" value="初期値"> というように、valueで指定すると思うのですが、 初期値に【"】半角のダブルクオートを含めたい場合は どのように記述するのですか? <input name="text1" type="text" value=""初期値""> のように記述すると空白が表示されてしまいます。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • テキストボックスの値同士を比較したい

    urizakaと申します。 さて、現在JSPでプログラムを組んでいるのですが、その際にHTMLフォームの テキストボックスとテキストボックスの値を比較して、同じ値だった場合に イベントが起きるようにしたいのですが、うまくいきません。 具体的には以下のようなソースコードを書いたのですが… <HTML> <BODY> <FORM name="Del"> <input type="text" name="1"> <input type="text" name="2"> (中略) </FORM> <script language="JavaScript"> if (Del.1.value == Del.2.value){ document.writeln("同じ値です"); } (以下省略)  以下省略で省略されている部分に関しては問題なく動くので この場所以外でのエラーはかんがえられないのですが…すみません が上記の方法についてご存知の方は教えていただけませんでしょうか?  宜しくお願いします。

  • テキストボックスの中に順番に○がついていくような・・・

    こんにちは。 jspで画像にあるような画面を表示できるようにと課題が出まして、四苦八苦しております。 内容は9個のテキストボックスがあり、OKボタンを押すごとに次のページに遷移し、1つずつ○が順に表示されていくというものです。 さらに、全てのボックスが埋まっている時にOKボタンを押すと全て空になり、また最初に戻ります。 自分で書いてみたコードはこんな感じです。 <%@page language="java" %> <%@page contentType="text/html;charset=Shift_JIS" %> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <HTML><HEAD><TITLE>課題1</TITLE> </HEAD><BODY> <FORM ACTION="kadai2.jsp" METHOD="post"> <BR> No.1:<INPUT TYPE="text" name="box1" VALUE="○"><BR> No.2:<INPUT TYPE="text" name="box2"><BR> No.3:<INPUT TYPE="text" name="box3"><BR> No.4:<INPUT TYPE="text" name="box4"><BR> No.5:<INPUT TYPE="text" name="box5"><BR> No.6:<INPUT TYPE="text" name="box6"><BR> No.7:<INPUT TYPE="text" name="box7"><BR> No.8:<INPUT TYPE="text" name="box8"><BR> No.9:<INPUT TYPE="text" name="box9"><BR> <INPUT TYPE="submit" VALUE="ok"> </FORM> </BODY></HTML> 上記と同様で、○を1つずつ増やしたファイルを9個作れば表示はできますが、それではHTMLで済んでしまいます。 1~9のボックスの部分をjava(配列)で書けますが、○を1個ずつ増やしていく方法が分かりません。 1つのファイルで自分を呼び出すという方法っぽいですが・・・ sessionでもrequestでも何でも大丈夫です。 ご教示お願いします。

    • ベストアンサー
    • Java
  • テキストボックスに関して質問です

    ページ間でのテキストボックスからテキストボックスへの文章の移行って可能でしょうか? tezt1.htmlってページにある 名前⇒<INPUT TYPE="text" NAME="name1"> 住所⇒<INPUT TYPE="text" NAME="adres1"> のテキストボックスに入力された文章を 入力ボタン <INPUT type="button" value="入力" onClick="・・・・・"> を押すと、下に用意してあるテキストボックス(別ページ)に入力した値が入るようにしたいのです。 tezt2.htmlの 名前⇒<INPUT TYPE="text" NAME="name2"> 住所⇒<INPUT TYPE="text" NAME="adres2"> 事情が有り一つのページで行えません。 フレームわけしたページで移行して使用したいのですが… 質問し方が悪くて大変申し訳有りません。宜しくお願いします。

    • ベストアンサー
    • HTML
  • テキストボックスに入力されたらラジオボタンにチェック

    いつもお世話になっております。 タイトル通りなのですが テキストボックスに入力された時に、チェックボックスや ラジオボタンににチェックが付くようなJavaScriptを思考しています。 test.php ---------------------------------------- <form name="form1" method="post" action="test.php"> <input type="checkbox" name="235[]" value="1"> <input name="394" type="text" style="ime-mode: active" onchange="text_check('235')" value="" /> </form> script.js ---------------------------------------- function text_check(nm) {  obj = document.form1;  alert(obj.elements[nm + '[]'].length); // アラートで「undefined」と出てしまう。  for( i=0; i<obj.elements[nm + '[]'].length; i++){   obj.nm[i].checked = true;  } } フォームのラジオボタン、テキストボックスのname属性は 数字じゃない場合は、問題なさそうなのですが 数字の場合だとうまく動作してくれません。 name属性を変更することは考えていません。 ご教示よろしくお願いいたします。

  • テキストボックスから、mailto

    ボタンからメール作成画面を起動させて、宛先と本文を入れておきたいです。 <INPUT type="button" value="メール" onclick="location.href='mailto:test_at_aaa.ne.jp?body=本文'"> <input type="text" value="" id="text1" name="text1"> <input type="text" value="" id="text2" name="text2"> text1の内容を本文、text2の内容をアドレスに 入れる事は出来るでしょうか? アットマークはサポート確認中になるので_at_で表しています。

  • テキストボックスのフォーカス移動

    こんにちは。 htmlページで<input type="text"/>に既定の桁数を入力したら次のinputにフォーカスを 移動させたいと考えています。 下の例の場合、1番目のテキストボックスに既定の桁数5ケタを入力したら、フォーカス を2番目のテキストボックスに移動させ、2番目のテキストボックスに4ケタ入力したら 3番目のテキストボックスにフォーカスを移動させるようにしたいと思っています。 スクリプトの再利用ができるよう、たとえば同じname属性を与えればその範囲内で 簡単にフォーカスを移動させられるようなものにしたいと思うのですが、うまくいきません。 何か良い書き方はありませんでしょうか? <div>  <input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="4" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>  <input type="text" name="hoge" maxlength="2" onkeyup="test(this)"/> </div>  ・  ・ <script type="text/javascript"> function test(elm) {  if (elm.value.length >= elm.maxLength) {   /*(気持ちとしては、ここにこのような感じのことを書きたいのですが・・・)     var arr_elm = document.getElementsByName(elm.name);     var n = elm.index + 1     arr_elm[n].focus();   */   } } </script>

  • チェックボックスのlengthについて

    チェックボックスで以下のソースでは obj.length=[undefined] と表示されます。1という結果ではないのでしょうか? <script type="text/javascript"> <!-- function test(obj){ alert('obj.length=[' + obj.length + ']'); } // --> </script> <form name="test_form"> <input type="checkbox" name="chk" value="">チェック1 <input type="button" value="テスト" onClick="test(document.test_form.chk)"> </form>

    • ベストアンサー
    • HTML

専門家に質問してみよう