C# 当HTML Select为空时禁用提交按钮

C# 当HTML Select为空时禁用提交按钮,c#,html,asp.net,razor,C#,Html,Asp.net,Razor,我是一个程序员,目前正在工作的项目 我的问题是:我有3个提交按钮(在同一个表单上),每个按钮调用不同的操作。如果HTML选择器(下拉菜单)没有任何选项可供选择,则这些按钮将被禁用 我的表单当前如下所示: <form asp-action="Index" method="post" onkeypress="return event.keyCode != 13;"> <div class="col-md-9"> <

我是一个程序员,目前正在工作的项目

我的问题是:我有3个提交按钮(在同一个表单上),每个按钮调用不同的操作。如果
HTML选择器
(下拉菜单)没有任何选项可供选择,则这些按钮将被禁用

我的表单当前如下所示:

        <form asp-action="Index" method="post" onkeypress="return event.keyCode != 13;">
        <div class="col-md-9">

            <div class="form-group form-inline">
                <label asp-for="OrderNumber">Order number: </label>
                <input asp-for="OrderNumber" class="form-control" type="text" placeholder="Insert order number" autofocus />
            </div>

            <div>
                <label>Delete</label>
                <input asp-for="Deletion" type="checkbox" />
            </div>

            <div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Receive" />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Start" />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Finish" />
                </div>
            </div>
        </div>

        <div class="col-md-3">
            <div class="form-group form-inline">
                <label asp-for="ProfileId">Profile: </label>
                <select asp-for="ProfileId" class="form-control">
                    @foreach (var p in Model.Profiles)
                    {
                        <option value="@p.ProfileId">@p.Name</option>
                    }
                </select>
            </div>
        </div>
    </form>
        <form asp-action="Index" method="post" onkeypress="return event.keyCode != 13;">
        <div class="col-md-9">
            <div class="form-group form-inline">
                <label asp-for="OrderNumber">Order number: </label>
                <input asp-for="OrderNumber" class="form-control" type="text" placeholder="Insert order number" autofocus />
            </div>
            <div>
                <label>Delete</label>
                <input asp-for="Deletion" type="checkbox" />
            </div>
            <div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Receive"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Start"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Finish"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
            </div>
        </div>
        <div class="col-md-3">
            <div class="form-group form-inline">
                <label asp-for="ProfileId">Profile: </label>
                <select asp-for="ProfileId" class="form-control">
                    @foreach (var p in Model.Profiles)
                    {
                        <option value="@p.ProfileId">@p.Name</option>
                    }
                </select>
            </div>
        </div>
    </form>

订单号:
删除
轮廓:
@foreach(Model.Profiles中的var p)
{
@p、 名字
}

谢谢您的帮助,如果您需要更多信息,或者这个问题描述得不好,请不要犹豫

为按钮指定id。将其设置为禁用(enabled=“false”)

当dropdownlist更改时调用javascript函数

在名为onchange的函数中检查dropdownlist的selectedIndex,并相应地设置按钮


我可以写一个函数来完成它,但你不会学到任何东西。如果您做一些研究,尝试编写函数,如果它不起作用,我会修复它。

只需禁用需要的表单字段,这取决于其他字段是否具有相同的条件要求。您可以给他们一个自定义类,使用一些javascript代码,并使用一些JS切换该类,就像这样

toggleAttribute = function(className,index){
      var eLs = [].slice.call(document.getElementsByClassName(className),0);
      for(var i=0; i<eLs.length; i++){
         eLs[i].disabled=(index==0 ? false : true); //index 0 is for 'Yes'
      }
}
toggleAttribute=function(类名,索引){
var eLs=[].slice.call(document.getElementsByClassName(className),0);

对于(var i=0;i我使用Razor提出了自己的解决方案

我的表单现在如下所示:

        <form asp-action="Index" method="post" onkeypress="return event.keyCode != 13;">
        <div class="col-md-9">

            <div class="form-group form-inline">
                <label asp-for="OrderNumber">Order number: </label>
                <input asp-for="OrderNumber" class="form-control" type="text" placeholder="Insert order number" autofocus />
            </div>

            <div>
                <label>Delete</label>
                <input asp-for="Deletion" type="checkbox" />
            </div>

            <div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Receive" />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Start" />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Finish" />
                </div>
            </div>
        </div>

        <div class="col-md-3">
            <div class="form-group form-inline">
                <label asp-for="ProfileId">Profile: </label>
                <select asp-for="ProfileId" class="form-control">
                    @foreach (var p in Model.Profiles)
                    {
                        <option value="@p.ProfileId">@p.Name</option>
                    }
                </select>
            </div>
        </div>
    </form>
        <form asp-action="Index" method="post" onkeypress="return event.keyCode != 13;">
        <div class="col-md-9">
            <div class="form-group form-inline">
                <label asp-for="OrderNumber">Order number: </label>
                <input asp-for="OrderNumber" class="form-control" type="text" placeholder="Insert order number" autofocus />
            </div>
            <div>
                <label>Delete</label>
                <input asp-for="Deletion" type="checkbox" />
            </div>
            <div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Receive"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Start"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
                <div class="col-md-4">
                    <input class="btn btn-block" type="submit" name="action" value="Finish"
                           @{ if (Model.Profiles.Count() == 0) { @: disabled="disabled"
                                                                                       } } />
                </div>
            </div>
        </div>
        <div class="col-md-3">
            <div class="form-group form-inline">
                <label asp-for="ProfileId">Profile: </label>
                <select asp-for="ProfileId" class="form-control">
                    @foreach (var p in Model.Profiles)
                    {
                        <option value="@p.ProfileId">@p.Name</option>
                    }
                </select>
            </div>
        </div>
    </form>

订单号:
删除
轮廓:
@foreach(Model.Profiles中的var p)
{
@p、 名字
}
我添加了一个if语句,用于检查我的配置文件列表中是否有任何配置文件。如果没有(0),则会将disabled=“disabled”属性添加到我的输入中


感谢所有试图帮助我解决此问题并为我提供解决方案建议的人:)

我可能不够清楚,或者我误解了您的回答。如果html select没有可供选择的值(如果Model.Profiles中没有配置文件),则应禁用这些选项。对我来说,简单地使用javascript代码禁用表单字段说起来容易做起来难。我以前没有使用JavaScripting的经验。我知道这不是javascript,但可能是类似于:'@if(Model.Profiles==null){buttons.enabled=false;}'按钮将是分配给这些按钮的id或类的位置?您好。您想使用Martin提到的方法,即add enabled=“false”对于需要禁用的类,或者您可以添加一个类并使用display:none,然后基于该类名,将该类名用于我发布的JS代码。。