0

ネストされたASP.NETListViewがあり、外側のリストビューは質問のグループを表示し、内側のリストビューはグループ内の個別の質問を表示します。一部の質問はドロップダウンリストとして表示されます。ポストバックを行わずに、変更時に選択した値を検出したい。「$(#control).val()」のような参照をたくさん見ましたが、もう少し柔軟性が必要です。

C#コードにJavaScriptを追加していますが、次のようになっています。

js = string.Format("javaScript:setInputSelectOption('{0}'); return false;", hidSelector.Value);
ddlInputSelectOptions.Attributes.Add("onchange", js);

結果のaspxファイルには、この生成されたコードが含まれています。

<div id='Management_q2'>
<input type="hidden" name="ctl00$body$lstExecutive$ctrl1$hidSelector" id="ctl00_body_lstExecutive_ctrl1_hidSelector" value="Management" />
    <select name="ctl00$body$lstExecutive$ctrl1$ddlInputSelectOptions"
  id="ctl00_body_lstExecutive_ctrl1_ddlInputSelectOptions" 
  onchange="javaScript:setInputSelectOption('Management'); return false;">
    <option value="0">Not Present</option>
    <option selected="selected" value="1">Occasionally</option>
    <option value="2">Customarily and Regularly</option>
    <option value="3">Constantly</option>
</select>
</div>

私の.jsファイルには次のコードが含まれています:

function setInputSelectOption(question) {
    var n = $('[id$=' + question + '_q2]>[id$=hidSelector]').val();
    var v = $('[id$=' + question + '_q2]>[id$=ddlInputSelectOptions]');
    setDDLData(n, v);
}

Chromeを使用して、「var v =」行でこれらのバリアントを試し、対応する結果を出しました。

$('[id $='+質問+'_q2]>[id $ = ddlInputSelectOptions]'):d.fn.d.init [1] $('[id $='+質問+'_q2]>[ id $ = ddlInputSelectOptions]')。value:undefined $(' [id $ ='+ question +'_q2]> [id $ = ddlInputSelectOptions]')。val(): ""

だから私は(まだ)jQueryに発声する正しいインカンテーションを探しているので、それはDDLから選択された値を返すでしょう。

4

1 に答える 1

1

シンプルに保つことをお勧めします。値を取得するDDLにデータ属性を追加します。jQueryを使用して値を見つけます。

ddl.Attributes.Add("data-ddl","reference");

それからJSで。

// get value
var ddlValue = $("select[data-ddl='reference']").val();
// assign value
$("select[data-ddl='reference']").val("option");

また、JSがUIロジック専用の場合は、JSをC#コードから除外し、jQueryを使用してページ上で実行することをお勧めします。したがって、JSファイルで。

$(function(){
    // bind a function to the select change event
    $("select[data-ddl='reference']").change(function(){
        // insert UI logic here
    });
});
于 2012-11-08T23:00:21.617 に答える