为什么我在用 JS 编辑一些值后提交表单时得到空值?

我有一个表单,其中包含一些从 AJAX 请求的结果中填充的输入。当我提交表单时,我只能null在后端得到。我尝试提交值而不编辑它并且它有效


这是我的java脚本代码


editPayment = function() {

  if ($('#entrytransId').val() != '') {

    if ($('#entryReceiptTypesselect').val() == "1") {

      $.ajax({

        type: "GET",

        url: "@Url.Action("GetInvoiceNumber", "Payment")",

        data: {transId: $('#entrytransId').val()},

        success: function(response) {

          if (response.invNo == 0) {

            window.location.reload();

          } else {

            $('#reciptNo').val(response.invNo);

            $('#enteryAmt').val(response.Amt);

            $('#entrytransId').attr("disabled", "true");

            $('#enteryhide').show(500);

          }

        },

        error: function(reponse) {

          window.location.reload();

        }

      });

    }

  }

这正是我的 HTML 表单,我尝试了更多次输入,但失败了,但是当我删除 javascript 函数并手动填充数据时,它的工作原理


<form action="/Payment/EditPayment" id="MF" method="post">                                    

<div class="row">

<div class="col-md-2">

   <label class="form-control">Receipt Type</label>

</div>

<div class="col-md-8">

<select class="form-control" id="entryReceiptTypesselect" 

name="entryReceiptTypes" required="true"><option value="">-Choose</option>

<option value="1">MoF</option>

<option value="2">Zakah</option>

<option value="3">Tax</option>

<option value="4">Other Taxs</option>

<option value="5">M & S</option>

</select>

    </div>

</div>

<div class="row">

    <div class="col-md-2">

        <label class="form-control">Trans Id</label>

    </div>

    <div class="col-md-3">

        <input required="" type="number" class="form-control" id="entrytransId" name="entrytransId">

    </div>

    <div class="col-md-2" hidden="" id="btnHidden">

        <button type="button" class="btn btn-primary legitRipple" onclick="editPayment()">check</button>

    </div>

</div>


杨魅力
浏览 316回答 2
2回答

杨__羊羊

问题是$('#entrytransId').attr("disabled", "true");&nbsp;我有另一个功能onselectChange()被禁用了所有输入,我试过了$('#entrytransId').attr("disabled", "true");,它运行良好

陪伴而非守候

问题不在于通过 javascript/jquery 设置值,而在于将输入设置为disabled。$('#entrytransId').attr("disabled",&nbsp;"true");当输入设置为 时disabled,它不会包含在表单的 POST 中(被排除在外),因此会像null在服务器端代码中一样出现。您可以: - 不将它们设置为禁用(会影响您的用户体验) - 在 POST 之前启用它们(icky) - 使用隐藏字段MVC 为复选框执行此操作,因此您可以在此处复制该想法:<input&nbsp;type='text'&nbsp;name='entryid'&nbsp;/> <input&nbsp;type='hidden'&nbsp;name='entryid'&nbsp;/>POST 使用输入的name字段,而不是它的id,因此可以有多个具有相同名称的输入。然后 POST 将使用未禁用的第一个输入(因此不要将隐藏的输入放在第一位...)然后只需更新 jquery 以将值应用于两个输入(如果您还希望它显示在 UI 中)而不是通过 id,例如:$("name[entryid]").each(function()&nbsp;{&nbsp;$(this).val(newvalue);&nbsp;});(其他设置方法可能更好,不检查是否.val()适用于所有,可能仅适用于第一个)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript