0
  • DotNetNuke で ASP を使用して、繰り返されるラジオ ボタンのリストをループします。
  • JQueryの活用
  • 現在、weightCalculations 関数の適切な結果値を表示しています (例: 3)
  • rbtCalculations の結果を weightCalculations の結果と組み合わせるにはどうすればよいですか?
  • 例: IF rbtCalculations = Very High AND weightCalculations = High THEN $('p.custom' + ID).text("5");

    <input id="rbt_0" name="rbt" value="Very High" checked="checked" onclick="rbtCalculations(this,6559);" type="radio">
    <input id="rbt_1" name="rbt" value="High" onclick="rbtCalculations(this,6559);" type="radio">
    
    <input id="stakeholders_rbt_0" name="stakeholders_rbt" value="Very High" onclick="weightCalculations(this,6559);" type="radio">
    <input id="stakeholders_rbt_1" name="stakeholders_rbt" value="High" checked="checked" onclick="weightCalculations(this,6559);" type="radio">
    <input id="stakeholders_rbt_2" name="stakeholders_rbt" value="Low to Moderate" onclick="weightCalculations(this,6559);" type="radio">
    
    <p class="custom6559">3</p>
    
    <script type="text/javascript">
        function weightCalculations(value, ID) {
            if (value.value == "High") {
                $('p.custom' + ID).text("3");
            }
            else {
                $('p.custom' + ID).text("2");
            }
    }
    
4

2 に答える 2

1
function weightCalculations(value, ID) {
        if (value.value === "High" && $('input[name="rbt"]').val() === "Very High") {
            $('p.custom' + ID).text("5");
        }
        else if(value.value === "High"){
            $('p.custom' + ID).text("3");
        }
        else {
            $('p.custom' + ID).text("2");
        }
}
于 2012-04-18T17:11:58.720 に答える
1

おそらくclass、ラジオ ボタンに a を追加してそれらを識別し、ラッピング要素を追加してすべてのパーツを関連付けます。

<div class="js-weight-calc-wrap">
    <input type="radio" class="js-rbt" ... />
    <input type="radio" class="js-rbt" ... />

    <input type="radio" class="js-weight" ... />
    <input type="radio" class="js-weight" ... />
    <input type="radio" class="js-weight" ... />

    <p class="js-result custom6559"></p>
</div>

<script>
jQuery(document).ready(function ($) {
    $('.js-rbt, .js-weight').change(function () {
        var $this = $(this),
            $wrap = $this.closest('.js-weight-calc-wrap'),
            rbtVal = $wrap.find('.js-rbt:checked').val(),
            weightVal = $wrap.find('.js-weight:checked').val(),
            result = rbtVal === 'VeryHigh' && weightVal === 'High' 
                     ? '5'
                     : rbtVal === 'VeryHigh' && weightVal === 'Low'
                         ? '4'
                         : '0';
        $wrap.find('.js-result').text(result)
    });
});
</script>

また、おそらくそのすべてのロジックを含む jQuery プラグインを作成することになるので、ページでは次のような呼び出しになります。

jQuery(function ($) { 
    $('.js-weight-calc-wrap').weightCalculator({
        rbtSelector: '.js-rbt',
        weightSelector: '.js-weight',
        resultSelector: '.js-result'
    });
});

アップデート

ラジオボタンを選択するときにラジオボタンをフィルタリングして、チェックされたものだけを取得する必要があることを以前に忘れていました(<select/>要素と混同していました)。:selectセレクターに追加すると、期待どおりに機能します。もう少しきれいにして、動作する jsFiddleを作成しました。

于 2012-04-18T18:08:52.393 に答える