2011-08-04 4 views
0

ソート可能な行を持つテーブルを作成しようとしていますが、これらの行の1つにドロップダウンが必要です。TH onclick発射ドロップダウンTHクリック、ドロップダウンではない

問題は、ドロップダウンをクリックすると、テーブルヘッダーのクリックイベントが発生していないため、発生しないようになっています。

私はこれが見つかりました:

http://www.velocityreviews.com/forums/t367867-table-row-background-onclick.html

をしかし、私は思った - よりエレガントな解決策が存在しなければなりませんか?

任意の受取人ですか?

申し訳ありません - 例を忘れました!

<th onclick="SortBy(event,'ctl00$mainContent$hiddenPBButton','descending','1')" class="tableDataHeader"> 
     <select id="groupby1"` onchange="performPostBackfromDrop(event,this,'ctl00$mainContent$hiddenPBButton');"><option value="Enquiry Type">Enquiry Type</option> 
      <option value="Location">Location</option> 
      <option value="Source">Source</option> 
      <option selected="" value="User">User</option> 
     </select> 

    </th> 

JS

あなたが見ることができるように - (FireFoxのが、私が選択するために、onclickイベントを追加し、伝播を停止明快

function SortBy(e, PBID,direction, field) 
{ 
    performPostBackfromSort(PBID,direction,field); 
} 
function performPostBackfromSort(PBID, direction, field) 
{ 
    __doPostBack(PBID, "sort"+"-"+direction+"-"+field); 
} 

function performPostBackfromDrop(e,sender, PBID) 
{ 
    var value = getDropDownSelectedValue(sender); 
    __doPostBack(PBID, $j(sender).attr('id')+"-"+value); 
} 
+0

コードはどこですか? jQueryのようなフレームワークを使用していますか? – Shef

+0

コードを投稿することはできますか?可能であればhttp://jsfiddle.net – Calum

+0

申し訳ありません - もう少し情報を入れてください!それはjQueryです!コード投稿 –

答えて

2

のためにそれを含めました - JSはかなり一般的なもので)またはバブリングを止める(IE)。 ここに私が使用したサンプルコードがあります。

<html> 
<head> 
<title>test</title> 
<script> 
function divOnclick(event) 
{ 
    alert("Div onclick"); 
} 
function selectOnclick(event) 
{ 
    stopPropagation(event); 
} 
function selectOnchange(event) 
{ 
    alert("Select onchange"); 
} 
function stopPropagation(ev) 
{ 
    ev = ev||event; 
    ev.stopPropagation? ev.stopPropagation() : ev.cancelBubble = true; 
} 
</script> 
</head> 
<body> 
    <div id="test" style="width:200px;height:200px;" onclick="divOnclick(event)"> 
     <select id="groupby1"` onclick="selectOnclick(event);" onchange="selectOnchange(event);"> 
      <option value="Enquiry Type">Enquiry Type</option> 
      <option value="Location">Location</option> 
      <option value="Source">Source</option> 
      <option selected="" value="User">User</option> 
     </select> 
    </div> 
    </body> 
</html> 
関連する問題