2017-03-21 6 views
1

私は、要素がフォーカスを失ったときに新しい値を保存する必要がある場所の編集機能を持っています。これはテーブル内の要素なので、要素IDとデータベース内のIDが1つずつあるため、$('#id').on('event', function(){}を使用できませんでした。if文で特定のjsイベントを条件付けできますか?

要素は次のようなものになります。

<td> 
<div id="quant<?php echo $id_product; ?>" 
onclick="live_update('<?php echo $id_product; ?>')"> 

    <?php echo $quantity;?> 

</div> 
</td> 

をし、jsは次のようになります。

function live_update(id){ 

    var quantity = $('#quant'+id).text().trim(); 

    $('#quant'+id).html(''); 
    $('<input></input>') 
     .attr({ 
      'type': 'text', 
      'name': 'name_quant'+id, 
      'id': 'id_quant'+id, 
      'size': '5', 
      'value': quantity, 
      'minlength' : '1', 
      'maxlength' : 4 
     }) 
     .appendTo('#quant'+id); 
    $('#id_quant'+id).focus(); 
} 

これまでのところは良い、事は、私が今、ときに特定の要素を更新する必要があります新しく生成された入力はフォーカスを失うので、html idだけでなくデータベースIDも渡す必要があるので、テーブルの要素を聴くことができないので、$('#id_quant').on('blur', function(){}を使用することはできません。

私は新しい入力がフォーカスを失ったときにこのような別の関数を呼び出すと思ったが、私はそれができるかどうか分からず、構文がどうなるかわからない。 は私の心の中で、それは次のようになります。

if($('#id_quant'+id).blur){ function ajax_update(id) } 

または

if($(blur('#id_quant'+id))){ function ajax_update(id) } 

私は私もそれを行うことができ、本当にわかりません。

答えて

0

これらの項目にぼかし用

function live_update(id){ 

    var quantity = $('#quant'+id).text().trim(); 

    $('#quant'+id).html(''); 
    $('<input></input>') 
     .attr({ 
      'type': 'text', 
      'name': 'name_quant'+id, 
      'id': 'id_quant'+id, 
      'size': '5', 
      'value': quantity, 
      'minlength' : '1', 
      'maxlength' : 4, 
      'data-id', id // here 
     }) 
     .addClass('inline-editor') // and here 
     .appendTo('#quant'+id); 
    $('#id_quant'+id).focus(); 
} 

(動的に)あなたの動的な要素にクラスとdata-id属性を適用し、内IDをお読み - あなたのAJAX呼び出し

$(document).on('blur','.inline-editor', function(){ 
    var id = $(this).data('id'); 
    // make ajax call 
    ajax_update(id); 
} 
を作ることが可能
+0

返信いただきありがとうございます。私は問題がある。 '.addClass( 'inline-editor');' –

+0

を追加すると関数の動作が停止するまた、最初の関数の中にその2番目の関数を追加することを意味しましたか?または別のものとして? –

+0

@F_Bass for comment 1あなたは私のコードになかったセミコロンを追加しました。 - 'appendTo'への呼び出しを停止します。コメント2の場合は、文書準備ハンドラの中に置くだけです。 – Jamiec

関連する問題