【问题标题】:How to disable a submit form button given a certain condition如何在给定条件下禁用提交表单按钮
【发布时间】:2013-05-04 16:01:52
【问题描述】:

如果记录字段“状态”已记录为已取消,我想禁用取消按钮。我已经知道如何禁用按钮,但问题是 jquery 如何知道记录字段“状态”已取消。 这是代码

 @foreach (var rDetail in Model.Customers.ToList()) { 

      <tr>
    <td>
        @Html.DisplayFor(model => rDetail.DateEntry)
    </td>
    <td>
        @Html.DisplayFor(model => rDetail.DateStart)
    </td>
    <td>
        @Html.DisplayFor(model => rDetail.DateEnd)
    </td>
    <td>
        @Html.DisplayFor(model => rDetail.Status.Name)
    </td>

    <td>
        @Html.DisplayFor(model => rDetail.UserCode)
    </td>
    <td>
        @Html.DisplayFor(model => rDetail.DateModified)
    </td>
    <td>
        @Html.DisplayFor(model => rDetail.Remarks)
    </td>
    <td>
        @Html.ActionLink("Details", "Details", "RoomReservation", new { id = rDetail.Id}, null) |
        @using (Html.BeginForm("CancelReservation", "Rooms", new { roomId = Model.Id, reservationId = rDetail.Id, methodId = 0})) {
        <input type="submit" value="Cancel" class ="cancelSubmit"/>
        }
    </td>
</tr>

任何帮助将不胜感激,谢谢:)

【问题讨论】:

  • 您想在取消状态标签时禁用按钮,对吗?渲染期间也是这样吗?

标签: c# jquery asp.net-mvc asp.net-mvc-4


【解决方案1】:

如果您知道状态已取消,您可以在 Razor 本身中禁用它。

    <td>
        @Html.ActionLink("Details", "Details", "RoomReservation", new { id = rDetail.Id}, null);

  @if(rDetail.Status.Name.Equals("cancelled"))
  {
    <input type="submit" value="Cancel" class ="cancelSubmit" disabled/>
  }
  else
  {
        @using (Html.BeginForm("CancelReservation", "Rooms", new { roomId = Model.Id, reservationId = rDetail.Id, methodId = 0})) {
        <input type="submit" value="Cancel" class ="cancelSubmit"/>
        }
   }
    </td>

如果你想做jquery方式:-

$(function(){
$('.cancelSubmit').each(function(){
   if($(this).closest('tr').find('#Status_Name').text() === 'cancelled')
   {
       $(this).prop('disabled',true);
   }
  });
 });

或者在你可以做的函数里面:-

$(this).prop('disabled',
        $(this).closest('tr')
       .find('#Status_Name')
       .text() === 'cancelled');

【讨论】:

  • 老兄,你是救生员。我使用了剃须刀方法,它就像一个魅力。虽然我之前也尝试过逻辑,但我们在代码语法上有所不同。我真的需要在 ASP.net MVC 4 上增加我的代码字典。无论如何,再次感谢伙计。
  • 哇,太好了,很高兴它成功了。我只是在编辑器中输入的,甚至不确定语法是否正确.. :)
  • 好吧,起初它没有用,但你的“取消”是小写字母“c”,至于我的记录在一个大写字母“C”上,改变它之后,它起作用了^^
  • 使用StringComparison.InvariantCultureIgnoreCase。即rDetail.Status.Name.Equals("cancelled",StringComparison.InvariantCultureIgnoreCase); 所以大小写无关紧要。
【解决方案2】:

如果我理解你的话,这样的事情应该可以工作:

$('#Status_Name').on('keypress', function(e) { //I think that's how the XFor handlers format ids
    $('button_to_disable').prop('disabled', this.value === 'Cancelled');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2016-04-03
    • 2017-12-27
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多