2

我在屏幕上有几个单选按钮,当其中一个被选中时会出现一个下拉列表:

<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>

I then have some Jquery script to hide the SPAN when the "Stock Order" option is selected:

$('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 中却不行 - 选择了“Stock”单选,但下拉菜单不会在页面加载时隐藏(更改为部分,然后再返回将隐藏它)。我已经尝试在 else 语句中放置一个 Alert() ,并且正在显示,只是 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 回答
0

您只需要转义.字符,例如:

$('input[name=Order\\.OrderType]')

否则在 chrome 中你会得到如下错误:

未捕获的错误:语法错误,无法识别的表达式:input[name=Order.OrderType]:checked

于 2013-10-25T08:47:51.333 回答
0
$('input[name=Order.OrderType]:checked').val() == "Parts")

此函数仅返回第一个检查值。因此,当您检查零件并用户检查库存时,它没有运行。

您应首先加载所有检查过的输入,并通过 for 循环检查每个输入的值。

于 2013-10-25T08:50:25.117 回答