2

画面にいくつかのラジオ ボタンがあり、そのうちの 1 つを選択するとドロップダウンが表示されます。

<div class="sectionContent">
    <input type="radio" value="Parts" name="Order.OrderType" @if(Model.Order.OrderType=="Parts" ){ <text>checked</text>} />Parts Order
    <br /> <span id="TieToJob">
                    <table>
                        <tr><td style="width:150px">Job</td><td>@Html.DropDownListFor(modelItem => Model.Order.JobID, new SelectList(ViewBag.ActiveJobs, "Value", "Text", Model.Order.JobID), "## Please Select ##")</td></tr>
                    </table>
                </span>

    <input type="radio" value="Stock" name="Order.OrderType" @if(Model.Order.OrderType=="Stock" ){ <text>checked</text>} />Stock Order
    <br />
</div>

次に、「株式注文」オプションが選択されているときに SPAN を非表示にする Jquery スクリプトがあります。

$('input[name=Order.OrderType]').click(function () {
        if ($('input[name=Order.OrderType]:checked').val() == "Parts") {
            $("#TieToJob").show("slow");
        }
        else {
            $("#TieToJob").hide("slow");
        }
    });

上記のコードは、ストック/パーツを変更するときに正常に機能します。

ただし、ユーザーが既存の株式レコードを編集している場合は、デフォルトでドロップダウンを非表示にする必要があります。そのために次のコードを使用しています。

$(document).ready(function(){
    if ($('input[name=Order.OrderType]:checked').val() == "Parts") {
        $("#TieToJob").show("slow");
    }
    else
    {
        $("#TieToJob").hide("slow");
    }
});

これは IE では正常に動作するようですが、chrome では動作しません。「ストック」ラジオが選択されていますが、ページの読み込み時にドロップダウンが非表示になりません (パーツに変更してから再度戻すと非表示になります)。Alert() を else ステートメントに入れてみましたが、これが表示されています。SPAN だけが非表示になりません!

何か案は?

4

3 に答える 3

4

.フィールド名のをエスケープする必要があります。これを試して:

$(document).ready(function(){
    if ($('input[name=Order\\.OrderType]:checked').val() == "Parts") {
        $("#TieToJob").show("slow");
    }
    else
    {
        $("#TieToJob").hide("slow");
    }
});

または、属性値を引用符で囲みます。

if ($('input[name="Order.OrderType"]:checked').val() == "Parts") {
    // code...
}
于 2013-10-25T08:46:59.520 に答える