2012-01-19 5 views
1

私はこのフォームを(CSSとjavascriptで)動作させようとしていましたが、何かに苦しんでいます。私はフォームを持っていて、基本的にはすべて動作しています。フォームボディ、およびサブミット、クリアなどのコンテナ 上部divはheight:autoに設定されています。位置:絶対;底は何も設定されていません。ちょうど幅がありました。javascriptのsubmitボタンを押した後、フォームdiv +エラーメッセージの高さをどのように取得しますか?

ユーザーが送信ボタンをクリックすると、フォームボディのサイズを変更する必要がありますが、下部のdivの位置を設定するためにフォームの新しいサイズを取得する方法がわかりません。

私はちょうどCSSの多くを追加しました - フォーム用に開いたテンプレートを保持する背景divがあります - 私はそれをrelativeに設定しましたが、formbodyは高さがautoエラーのためにサイズを変更する(そして、私はpositionなしでautoに設定する:絶対、formbodyは20pxに縮小した)。

.background { 
    width: 0px; 
    height: 700px; 
    position: relative; 
    z-index:999; 
    } 

.formbody { 
    background-image: url(''); 
    background-repeat: no-repeat; 
    background-position: left bottom; 
    position:absolute; 
    left:0px; 
    top:50px; 
    width:700px; 
    height:auto; 
    padding-bottom:20px; 
    border:1px solid #d2d2d2; 
} 

.bottom { 
    width:700px; 
} 
+0

フォーム本体を絶対に配置する必要がある理由を説明できますか?私の最初の提案は、これを避けるか、 '.bottom'と' bottom:0px; 'を絶対的に配置することです。そのため、底に移動して、相対位置にある親コンテナにそれらをラップします。 – Seth

+1

あなたはjsfiddle.netのyoureコードを与えることができます –

答えて

0

のようなもの、この仕事はしませんか? (ここにはライブプレビューがあります:http://jsfiddle.net/rcMGn/1/

基本的には私がここでやっているのは、formwidthクラス(あなたのCSSごとに)の最初のノードを取得し、そのスタイルプロパティを取得するためにDOMモデルを使用することです。

関数getElementsByClassは、formwidthクラスの文書内のすべての要素の配列を返します(そして、私はそこに1つしかないと仮定しています)。配列の最初の要素を取得します。それをスタイリングする。

あなたは以下のコードのちょうど最初の行の幅を取得するには...機能について を気にする必要はありません...

formWidth = getElementsByClass('formbody',null,'form')[0].offsetWidth; 

は高さを取得するには、このいずれかを使用
formHeight = getElementsByClass('formbody',null,'form')[0].offsetHeight; 

Dustin Diaz、以下の機能のファイルから機能をコピー...

function getElementsByClass(searchClass,node,tag) { 
    var classElements = new Array(); 
    if (node == null) 
     node = document; 
    if (tag == null) 
     tag = '*'; 
    var els = node.getElementsByTagName(tag); 
    var elsLen = els.length; 
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); 
    for (i = 0, j = 0; i < elsLen; i++) { 
     if (pattern.test(els[i].className)) { 
      classElements[j] = els[i]; 
      j++; 
     } 
    } 

    return classElements; 
} 
+0

ありがとう、私はオフィスに入るときにそれを試みるつもりです。昨日私の頭を昨日のように叩きました:-) – user887961

+0

こんにちは、これを試しましたが、私が実際にやる必要があるのはフォームボディーの高さを取得して(ユーザーが提出したら)、その数字を使って背景の高さを変更します上記のコードを追加しました)。それでも私の脳は壊れています。しかし、ありがとうございました... – user887961

+0

jsFiddleページ[==>ここ<==](http://jsfiddle.net/rcMGn/2/)を更新して、あなたが望むことをしました...そして、答えの本文を編集しました。それが動作すれば、正解plsとして評価してください! :) – edgarator

0

この

<script> 

    var formbody_width= $(".formbody").width(); 

    $(".submit").live("click", function) { 

     $(".formbody").css("height", formbody_width + 300 + "px");  

    } 

</script> 
+0

これは幅についてではありませんが、私はそれを試みることができます - それは高さです。これはjQueryですが、そうですか?私は自分のフォームではなく、jQueryを使っています。私はjavascriptでそれを行う方法を考え出すことができると思います。 – user887961

+0

'var formbody_height = $("。formbody ")。height(); $ {"submit"}ライブ( "click"、function){ $( "。formbody").css( "height"、formbody_height + 300 + "px"); } –

関連する問題