2012-03-26 1 views
0

更新:これはまだわかっていませんが、私がしたいことに似ていると思われます。Jquery - Jeditable: How Reset to non-editable without page refreshそれを組み込もうとしましたが、それは私が期待している方法で動作するために2回のクリック(または2回のCtrl +クリック)を取っているので、正しく実行しています。左クリックでセルをジェダイできるようにする、またはCtrlキーを押しながらダイアログを開く

$( "div.wanttoedit")。(e.ctrlKey){
$( 'div.wanttoedit')場合は(関数(E){
をクリックします。addClass( 'non_edit')。removeClass ( '編集')( 'click.editable')バインド解除;。
警告( 'Ctrlキーが押された');
}他{
警告( 'Ctrlキーが押されなかった');
$( 'divが。 ( '編集'); $( '.edit').editable( 'http://#request.host#/vp/metrics.cfc?method = updateMetrics & returnform at = plain ');
}
});

<div id="#results.id#" class="wanttoedit non_edit">#val(value_disp)#</div>

ここでも、任意の助けが激しく認められます。ありがとう。


私はまだjquery/javascript/jeditableの新機能ですので、できるだけ親切で明示してください。 :)

私は、行ラベル=メトリック名と列ラベル=月のテーブルを持っています。セルには、対応するメトリック値が含まれています。単一の左クリックが可能で、メトリック値を編集可能にするだけでなく、Ctrlキーを押しながら(または右クリック、Shiftキーを押しながらクリックなど)、メトリックが見逃された理由を入力できるようにしたいそれがあったならば)。これらの2つの事柄は、データベース内の2つの異なる表で更新されますが、どちらも関連するmetric_id/nameおよびtimeframe/monthにリンクされています。

jeditableで動作するメトリック値の1回の左クリック編集を取得できましたが、これまでのところ、フィールドを作成する方法を見つけても、もう一度クリックしてダイアログを開くことができますボックスにミス情報を入力します。

これはかなり簡単な女の子のために理解しやすくすることができれば、どんな助力も心から感謝します。

私はColdfusionを使用しています(必要な知識があるかどうかは不明ですが、その場合には言及しておきたいと思います)。これを解決するために必要なコードスニペットを提供できます。

ここに私のコードのサンプルがあります。私はjqueryタブを使用していますので、編集可能な場所はいつもとはちょっと違っています。私は失われている場合があります)

$(ドキュメント).ready(関数(){
$( "#のcymteamtabs")タブ({
キャッシュ:偽、
負荷:機能(イベント、 ui){
$( ".editMetric").editable( "http://#request.host#/vp/metrics.cfc?方法= updateMetrics &たreturnformat =普通 ");
}、
ajaxOptions:{キャッシュ:偽}
}
);

<cfloop query="metrics">
<tr>
<td>#metrics.mdisplay#</td>
<cfloop query="dates">
<td id="#results.id#" class="editMetric">#val(value_disp)#</td> </cfloop>
</tr>
</cfloop>

ああと念私はCtrlキーを押しながらクリックすると、フィールドに、ポップアップの入力を可能にすると思われる....私はそれが何をしたいのかを明確にするました情報が欠落しています(編集は無効です)。そのダイアログが閉じられると、フィールドを左クリックすると、そのフィールドの編集が可能になるので、基本的には完全にjeditableをオフにしたくないのですが、私はそれが冬眠モードになることを望んでいます。ユーザーがフィールドをクリックすると、そのためにポップアップするダイアログボックスが閉じられます。

ありがとうございます。

+2

可能であれば、コードの関連サンプル、または[jsFiddle](http://www.jsfiddle.net)を提供してください。 – Blazemonger

答えて

0

これを並べ替えることを考える唯一の方法は少しハックです。 とにかく私は2つのイベントタイプを設定し、CTRL

問題はイベントタイプですが押されたときにそれらの間でスイッチングしている提案するので、どのようなイベントを条件を実行しているのがあるようには思えない - アンバインド彼らはそうビットが過大です。 最適なオプションは編集可能な要素を<td />として設定することですが、スパンのような別個の要素をトリガーとして持つことができます。私はこれを適切にテストするための設備を持っていない

$('.editMetric').editable('url1', { 
    event: "nrmlClick" 
}).editable('url2', { 
    event: "ctrlClick" 
}).bind('toggleClick', function(e) { 
    if (e.ctrley) { 
     /* modal javascript here */ 
     $(this).trigger('ctrlClick') 
    } else { 
     $(this).trigger('nrmlClick') 
    } 
});​ 

が、このはず作品:

は、あなたがこれを試みることができるあなたの現在のhtmlを続行するには。

私は以前はイベント名を作ったことがないので、(誰かが私たちを啓発することができれば)良いアイデアは分かりませんが、今はその害を見ることはできません。

希望に役立ちます!

+0

これはいいですが、通常のクリックはもちろんフィールドをクリックして(メトリック値)編集できるようにしますが、ctrl-クリックは全く異なるフィールド(メトリック・ミスの理由)を持つダイアログ・ボックスをポップアップする必要があります。どのように私は、 "第2"編集可能なイベントがトリガされる前に、ポップアップダイアログボックスを開始するコードを含めることができるいくつかの方法はありますか?そして、btw、これにあなたの援助のために非常に感謝します。 :) –

+0

ええ、それはうまくいくはずですが、私はあなたのモーダルがどのように設定されているのかわかりません - 正確な重複テーブルですか?モーダル要素を作成し、それに '.editable'をバインドするだけです。これは、私の例で2番目の編集可能なバインディングを移動し、トリガされている要素を変更します。最良の選択肢は、テーブルとモーダルの両方のためのサンプルhtmlを使ってjsfiddleを作成することです(現在はjavascriptについて心配しないでください)。そこからそれを取ることができます – lnrbob

1

私はこれを行うための最良の方法であるとは確信していませんし、私はそれがやりたいことを正確にやっていると私は肯定的ではありません。

$(document).ready(function() 
{ 
$("#cymteamtabs").tabs(
    { 
    cache: false, 
    ajaxOptions: {cache: false}, 
    load: function(event,ui) 
     { 
     $(".editMetric").click(function(e) { 
      if (e.ctrlKey) { 
       var metric_id = $(this).attr('data-metric-id'); 
       var date_type = $(this).attr('data-date-type'); 
       var value_date = $(this).attr('data-value-date'); 
       var url_tf = 'cym'; 
       var url_view = 'edit'; 
       scorecards.display.miss_details(metric_id,date_type,value_date,url_tf,url_view); 
       e.stopImmediatePropagation(); 
      } 
     }); 
     $(".editMetric").editable("http://<cfoutput>#request.host#</cfoutput>/vp/metricCFComponents.cfc?method=updateMetrics&returnformat=plain"); 
     } 
    }); 
}); 

これは、Ctrlキーを押しながらクリックすると、それが押された場合、その後、非jeditableコードが実行さe.stopImmediatePropagation()のために最初にチェックするために表示されます。その下のjeditableコードが実行されないように見えます。

関連する問題