2016-09-30 9 views
1

クリックしたときに最も近いdivを 'form_wrap'のクラスで見つけて、すべてのIDを見つけようとしていますそのdivの内部に形成されます。IDで最も近いdivを見つけてそのdiv内のすべてのフォームのIDを見つける方法

フォームは、2つのLaravel foreachループの一部として存在し、個々の動的ID番号が与えられています。これらのID番号を収集して提出する必要があります。

<div class="form_wrap"> 
    @foreach ($workouts as $workout) 
     <?php $formid="form_".$x."_".$f;?> 
     {!! Form::open(array('route' => 'workoutshared.store', 'method' => 'POST', 'ID' => $formid)) !!} 
     {{ csrf_field() }} 
     {{ Form::hidden('user_id', Auth::user()->id)}} 
     {{ Form::hidden('date', $entry)}} 
     {{ Form::hidden('weight', $workout->weight)}} 
     {{ Form::hidden('exercise', $workout->exercise)}} 
     {{ Form::hidden('reps', $workout->reps)}} 
     {{ Form::hidden('sets', $workout->sets)}} 
     <button id="submit" class="btn btn-default">Share</button>    
     {{ Form::checkbox('share', null, array('class' => 'form-control', 'required' => ''))}} 
     {!! Form::close() !!}  
     <tr> 
       <th>{{$workout->exercise}}</th> 
       <td>{{$workout->weight}}</td> 
       <td>{{$workout->reps}}</td> 
       <td>{{$workout->sets}}</td> 
     </tr> 
    <?php $f++; endforeach;?> 
</div> 
+1

IDに最も近いIDはありません。IDは一意であるため、特定のIDを持つ**要素は** 1つだけです。 – adeneo

+0

何に最も近いdiv?出発点は何ですか? –

+0

私は怠け者です。クラスに編集しました。 –

答えて

1

あなたが残した細部はたくさんありますので、答えは一致するように変更する必要があります。

たとえば、フォームの送信を許可しますか?それを傍受する?それとも気にしますか?

もう1つのポイントは、IDを持っていればそのIDで何をしたいのですか?

このコードはあなたが尋ねたことを行います。それはイベント委任を使用しているので、<head>にロードできるはずです。要求されたとおりに動作します。

// Bind to the click event of all form buttons 
$(document).on('click', 'form button', function() { 
    // Find the closest div 
    var wrap = $(this).closest('div.form_wrap'); 

    // Then, find all form ID's inside of the div: 
    wrap.find('form').each(function() { 
     var id = $(this).prop('id'); 
    }); 
}); 

これらのIDにはあなた次第ですが、必要に応じていくつかのオプションがあります。

+0

返事ありがとうございます、すべての作品は正しいフォームIDをコンソールに完全に引き出します。私は同じプロセスの一部としてフォームを提出したいと思います。私はAJAXを介して収集するか、より単純なプロセスがありますか? @cale_b –

+0

どのような形ですか?それらのすべて?複数のフォームを一緒に提出することはできないので、クリックされたフォームのフォーム提出を傍受してフォーム情報を結合するjavascriptをいくつか実行しなければなりません(dom操作またはAJAXを使用することができます)。しかしそれは別の質問です。これは、あなたがあなたの*新しい*スコープを達成するためのさらなる助けが必要な場合は、新しい質問を投稿する必要があります質問した質問に答えます。 –

1

は、私はあなたのクラスを使用すると、ページ上の複数の要素を見つけようとしてより良いオプションですが、「form_」で始まる任意のIDを見つけ$("[id^='form_']")をしたいと思います。

var formWrap = $("#SomeSpecificID").parent(); 
var formsInsideThatID = formWrap.children().attr('id'); 
+0

ありがとう@ダーラム。私はjQueryが実行されているこのインスタンスに最も近いクラスを探しています。この場合は.form_wrapです。このjQueryは各曜日のページにループされ、毎日.form_wrapを見つける必要があります。 –

+0

スクリプトは '<?php $ f ++;の直前に置かれます。 ?> –

+0

あなたが必要とするものはまだ正確ではありませんが、答えは編集されています – darham

関連する問題