0

新しい製品を作成するとき、それがローカルかどうかを定義する必要があります。製品モデルにはブール型のIsLocalプロパティがあります。

ここにビューがあります:

<form action="/Product/Create" method="post" id="Product_Form">
        <div>
            <label>Local</label>
            <input type="radio" name="IsLocal" id="IsLocal" value="yes" checked="checked" tabindex="10" />
        </div>

        <div>
            <label>Not local</label>
            <input type="radio" name="IsLocal" value="no" tabindex="11" />
        </div>

      <div id="yes">
          //some fields looks when product is local.
        </div>
        ...
        <input type="submit" value="Create" class="large" tabindex="17" />
 </form>

まず、ローカルのラジオボタンがチェックされています。Not localをチェックすると、一部のフィールドがこのコードで非表示になります。

<script>
      $("input:radio[name='IsLocal']").click(function () {
      $('#yes').hide();
      $('#' + $("input:radio[name='IsLocal']:checked").val()).show(); });
</script>

しかし、私が見つけたjquery関数を使用してコントローラーに値を送信する必要があります。

jQuery.post('/Product/Create', {
                    Name: jQuery('#Name').val(),
                    IsLocal: jQuery('#IsLocal').val(),
                    ImagePath: jQuery('#ImagePath').val(),
                    CategoryId: jQuery('#CategoryId').val(),
                    Price: jQuery('#Price').val(),
                    ............................ 
                    formname: 'Product_Form',
                    formtype: 'ProductF'
}

問題は、IsLocal が常に false であることです。ただし、他のフィールドの値は正しくコントローラーに送られます。チェックに応じてIsLocal値を送信するには、どうすればよいですか? (下手な英語でごめんなさい)

編集:

私は次のように変更<input>しました@Html.RadioButtonFor()

@Html.RadioButtonFor(model => model.IsLocal, true, new { id = "IsLocal_true", value = "yes", Checked = "checked" })

@Html.RadioButtonFor(model => model.IsLocal, false, new { id = "IsLocal_false", value = "no" })

IsLocal動作しますが、パネルの非表示が機能しなくなりました。さて、このスクリプトをどのように変更すればよいでしょうか? <div id="yes">タグの表示と非表示を切り替えます。

<script>
      $("input:radio[name='IsLocal']").click(function () {
      $('#yes').hide();
      $('#' + $("input:radio[name='IsLocal']:checked").val()).show(); });
</script>
4

3 に答える 3

2

これを試してください: jQuery('#IsLocal').is(":checked")

jQuery.post('/Product/Create', {
                    Name: jQuery('#Name').val(),
                    IsLocal: jQuery('#IsLocal').is(":checked"),
                    ImagePath: jQuery('#ImagePath').val(),
                    CategoryId: jQuery('#CategoryId').val(),
                    Price: jQuery('#Price').val(),
                    ............................ 
                    formname: 'Product_Form',
                    formtype: 'ProductF'
}

あなたの編集のために

ここでデモを参照してくださいhttp://jsfiddle.net/43GsG/4/

HTML:

@Html.RadioButtonFor(model => model.IsLocal, true, new { name = "IsLocal", id = "IsLocal_true", value = "yes", Checked = "checked" })

@Html.RadioButtonFor(model => model.IsLocal, false, new { name = "IsLocal", id = "IsLocal_false", value = "no" })

JS:

$("input[name=IsLocal]").click(function () {
    if($('#IsLocal_true').is(":checked")){
      $('#yes').show();
    }
    else {
      $('#yes').hide();
    }
  });
于 2013-01-07T06:08:14.037 に答える
1

選択ラジオボタンの値が必要な場合は、次のようにすることをお勧めします。

jQuery('input:radio[name=IsLocal]:checked').val();

于 2013-01-07T06:09:02.227 に答える
1

試す :

  jQuery('#IsLocal').attr('checked');
于 2013-01-07T06:12:57.647 に答える