電子書籍の厳選無料作品が豊富!

私は、windows環境でPHPを使って、サイトを構築しています。
JavaScriptに関してはJqueryを多少使ったことがある程度です。

調べてもよくわからなかったものがいくつかあるので、ご存知の方がいましたら、どれか1つでも教えて頂きたいです。
知りたい内容は以下の3点です。

1、フォームの入力欄をクリックするとその入力欄が浮かび上がり、入力してSubmitボタンを押すと元のページに値が反映される処理(Jqueryのlightpopを使ってみましたが、うまく値が送れませんでした。)

2、フォームの入力欄を増やしたり、減らしたりする処理

3、フォームの入力欄の順番を入れ替える処理(矢印などをつけて入れ替えたいです)

情報が不足していましたらご指摘ください。
宜しくお願いします。

A 回答 (6件)

1.については何故うまく出来なかったのかこれだけでは解りません。


2.については、DOM要素を操作する関数で実現します。
例えば、
<form id="hoge">
<input type="text">
</form>
といったform要素があったとして、
var form_elm=document.getElementById("hoge");
でform要素を取得します。
追加したい要素は
var input_elm=document.createElement('input');
input_elm.setAttribute("type","text");
input_elm.setAttribute("value","xxx");
あるいは、
var div_elm=document.createElement('div');
div_elm.inneHTML='<input type="text" value="xxx">'
のように作ります、作った要素を親であるform要素に
form_elm.appendChild(input_elm);
form_elm.appendChild(div_elm);
みたいに追加するのです。こおいったDOMのメソッドやプロパティ
操作は他にもいろいろあります。

3.については2の応用で、移動したい要素を取得した上で、削除し
別の場所に追加するといった処理になります。
矢印については、ホバー時にCSSの"cursor:"属性で矢印画像を要素にセッ
トすれば、実現できます。

まず、簡単な物をJAVASCRIPTだけで作ってみましょう。
そうすれば、理解が深まりライブラリーの使い方もわかります。
ちなみに2.なんてjQuery使えば1行ですみますし、3.についても
jQuery UIライブラリーに「draggable 」とか「droppable 」とか
があるので、自分で作りこむ手間が省けますが、使いこなすには
やはり、基礎知識が必要となります。
    • good
    • 0
この回答へのお礼

やはり基礎が大事ですね。
ヒントをいただけてうれしく思います。

ありがとうございました。

お礼日時:2009/12/11 00:14

#1と#3です。


>(それにしてもそんなやつをいっぱい見かけるのですが)
たしかにおおいね。じぶんもひとのこといえませんが。

いや~かこに、すごいひとにしてきされてね。
いつか、ちゃんすがあったら、だれかにやろうとおもってね。^^;

そのちゃんす、こんどは、yyr446さんにぷれぜんと。
あと、<script>とか<style>にtypeぞくせいをつけないひとにも、
いけるよ!

あと、<html>だけですませるひと。
あと、<title>がないひと。
あと、<img>にaltをはぶいてるひと。
あと、ちゃんとせんげんすれば、<head>とかしょうりゃくできるのを
しらないひと
などなど。
    • good
    • 0

No2です。

確かにHTML4.01 Strictのルールでは、
<form>の下に直接インライン要素をおくのは×だったんですね
失礼しました。
(それにしてもそんなやつをいっぱい見かけるのですが)
    • good
    • 0

No.2です。

(この質問の回答じゃないけど)
「いんらいんようそをいきなり
form_elm.appendChild(input_elm); 」
って普通はだめだったんですね。
改行されないだけだと思ってたんですけど....
子の方にinsertBefore()も同じでしょうね
    • good
    • 0

#1です。


</p>
</form>
が、ぬけてました。ごめんなさい。

いんらいんようそをいきなり
form_elm.appendChild(input_elm);
するのは、・・・・・。
    • good
    • 0

なんとなく1にかいとう。


でも、まちがいがいっぱいありそう。
test.htmlからtest1.htmlを

=== test.html ===
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<body>
<form id="test">
<p>
<input type="text" name="ab" value="123">
<input type="text" name="cd" value="XYZ">
<input type="button" value="ef" onClick="window.open(makeURL('test1.html','ab','cd'))">
</p>
<p>
<input type="text" name="ef" value="">
<input type="text" name="gh" value="">


<script type="text/javascript">

function makeURL( file, element0 ) {
 var rst = [ ];
 var cnt = 1;
 var tgt;
 
 while( tgt = arguments[ cnt++ ] ) {
  rst.push( encodeURIComponent( tgt ) + '=' +
   encodeURIComponent( getValue( tgt ) || '' ) );
 }
 return file + ( rst.length == 0 ? '': '?' + rst.join( '&' ));
}


function getValue ( inpName ) {
 var d = document;
 var counter = 0;
 var elements = d.getElementsByName( inpName ) || [ d.getElementById( inpName ) ];
 var e;
 
 while( e = elements[ counter++ ] ) {
  switch( e.type ) {

   case 'hidden' : case 'submit': case 'text': 
   case 'button' : case 'reset' : case 'textarea':
    return e.value;
    break;

   case 'checkbox': case'radio':
    if( e.checked ) return e.value;
    break;

   case 'select-one': // case 'select-multiple':
    var cnt = 0, o;

    while( o = e.options[ cnt++ ] )
     if( o.selected ) return e.value;
    break;

   default:
  }
 }
 return null;
}
</script>

===== test1.html =====
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST1</title>
<body>
<form id="ab">
<p>
<input type="text" name="ab" value="">
<input type="text" name="cd" value="">
<input type="button" value="close" onClick="closeWin()">
</p>

<script type="text/javascript">

function closeWin() {
 var w = window.opener;
 if( w ) {
  setFormValue( w.document, 'ef', '===' + getValue( 'ab' ) + '===' );
  setFormValue( w.document, 'gh', '===' + getValue( 'cd' ) + '===' );
  window.close();
 }

}

function getLocation () {
 var par = location.search.substring(1).split( '&' );
 var cnt = 0, pac, nv, ret = [ ];

 while( pac = par[ cnt++ ] ) {
  nv = pac.split( '=' );
  ret[ decodeURIComponent( nv[0] ) ] = decodeURIComponent( nv[1] );
 }
 return ret;
}


function setFormValue ( d, name, val ) {
 var i = 0, j = 0, o, p;
 var objs = d.getElementsByName( name );
 
 if( 0 === objs.length ) objs = [ d.getElementById( name ) ];

 while( p = objs[ i++ ] ) switch( p.type ) {
  case 'text': case 'textarea': case 'button': case 'reset': case 'submit': case 'hidden':
   p.value = val; break;
  case 'checkbox':
   p.checked = val; break;
  case 'radio':
   p.checked = ( p.value == val ); break;
  case 'select-one': case 'select-multiple':
   while( o = p.options[ j++ ] ) o.selected = ( o.value == val );
  default:
 }
}


function getValue ( inpName ) {
 var d = document;
 var counter = 0;
 var elements = d.getElementsByName( inpName ) || [ d.getElementById( inpName ) ];
 var e;
 
 while( e = elements[ counter++ ] ) {
  switch( e.type ) {

   case 'hidden' : case 'submit': case 'text': 
   case 'button' : case 'reset' : case 'textarea':
    return e.value;
    break;

   case 'checkbox': case'radio':
    if( e.checked ) return e.value;
    break;

   case 'select-one': // case 'select-multiple':
    var cnt = 0, o;

    while( o = e.options[ cnt++ ] )
     if( o.selected ) return e.value;
    break;

   default:
  }
 }
 return null;
}


var v = getLocation();
var k;
for( k in v ) {
 setFormValue( document, decodeURIComponent( k ), decodeURIComponent( v[k] ) );
}

</script>
    • good
    • 0
この回答へのお礼

コードまで書いていただきありごとうございます。
勉強不足で完璧には理解できてないですが、Closeをクリックしたときに値が元ページに送られていたので、作りたいものに近付けるかと思います。

ありがとうございました。

お礼日時:2009/12/11 00:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報