2017-02-03 5 views
0

テーブルの配列のクリックされた項目の値をヘッダの入力要素に送信したいと思います。jqueryで配列のクリックされた入力要素の値を取得する方法

以下のケースでは、私は常に最初の行の値を取得しました。クリックされた行の正確な値を取得するにはどうすればよいですか?

<?php 

if(isset($_SESSION['wo_arr'])) { 
    if(is_array($_SESSION['wo_arr'])) { 
     foreach($_SESSION['wo_arr'] as $key => $value) { 
      foreach($value as $k => $v) { 
       $wo_arr[$key][$k] = $v ; 
      } 
     } 
    } 
    $num = count($wo_arr['wo_no']); 
} else { 
    $num = 5 ; 
} 

?> 

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script> 

    function selectWork() { 

     $(document).ready(function() { 

      var data = $(this).find('.wono_arr').val() ;    
      $('#wo_no').val(data); 

     });  
    } 

</script> 
</head> 
<body> 

    <FORM> 

     <p> 
      work order # <INPUT size=10 TYPE="text" id=wo_no NAME="wo_no"> 
     </p> 

     <table> 

     <?php 
      for($i = 0 ; $i < $num ; $i++) { 
     ?> 

      <TR> 
       <TD><INPUT TYPE="TEXT" class="wono_arr" NAME="wo_arr[wo_no][]" 
        value="<?php if(isset($wo_arr['wo_no'][$i])) echo $wo_arr['wo_no'][$i]; ?>" 
        onclick="selectWork()"> 
       </TD> 
      </TR> 

     <?php 
      } 
     ?> 
     </TABLE> 

    </FORM> 

</body> 

</html> 

ありがとう:

は、ここで私が何をしようとしています何の私のコードです。

+0

を使用すると、このオブジェクトによってイベントを渡されたメソッドへのデフォルトでevent.currentが見つかりました。 –

+0

'ng-click =" functionName(this) "' '$ scope.functionName = function (送信者){alert(sender.value) ' – awiebe

+0

ありがとう、ÁlvaroTouzón。私は私の問題を解決しました。 – sky

答えて

0

は、関数呼び出しにthisを置く:

HTML

<INPUT TYPE="TEXT" class="wono_arr" NAME="wo_arr[wo_no][]" value="<?php if(isset($wo_arr['wo_no'][$i])) echo $wo_arr['wo_no'][$i]; ?>" onclick="selectWork(this)"> 

し、それを使用します。

function selectWork(e) {   
    var data = $(e).val();    
    $('#wo_no').val(data); 
} 

を推奨

JS

HTML

<INPUT TYPE="TEXT" class="wono_arr" NAME="wo_arr[wo_no][]" value="<?php if(isset($wo_arr['wo_no'][$i])) echo $wo_arr['wo_no'][$i]; ?>"> 

JSが

$('table').on('click','.wono_arr', function() { 
    var data = $(this).val();    
    $('#wo_no').val(data); 
}); 
+0

Norlihazmey Ghazaliに感謝して、あなたの答えも素晴らしいです。私の5時間の頭痛。ハハ – sky

+0

それを聞いてうれしいとあなたは歓迎の仲間です。 :) –

0

共通クラス名とし、そのためにあなたのそれぞれの要素を定義します。代わりに、そのようにjavascriptのインラインを使用しての入力要素にハンドラをクリックしttachクラスは次のようにクリック関数を定義します。

//JS 
<script> 
$(document).ready(function(){ 
    $(".wono_arr").click(function(){ 
     alert("Value"+$(this).val()); 
     alert($(this).attr('id')+"clicked"); 
    }); 
}); 
</script> 
//In your html 
<table> 
<?php 
    for($i = 0 ; $i < $num ; $i++) { 
?> 
    <tr> 
     <td><input type="text" class="wono_arr" id="<?php echo $wo_arr['wo_no'][$i]; ?>" name="wo_arr[wo_no][]" 
       value="<?php if(isset($wo_arr['wo_no'][$i])) echo $wo_arr['wo_no'][$i]; ?>" 
      /> 
     </td> 
    </tr> 

<?php 
    } 
?> 
</table> 

は、複数のHTML要素については、同じクラス名を定義することができ、その後、あなたはjQueryのを使用する方法を定義した場合、あなたはそのクラスを使用する場合は、この方法では、すべてのHTML要素のために動作します。メソッドを呼び出すと、 thisキーワードを使用して、現在のクリックされた要素の値を取得します。

+0

ご意見ありがとうございます。 – sky

関連する問題