为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2021-10-14 11:01:59
我有一个表单,其中包含一些从 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>
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-10-14
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

问题不在于通过 javascript/jquery 设置值,而在于将输入设置为disabled

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

当输入设置为 时disabled,它不会包含在表单的 POST 中(被排除在外),因此会像null在服务器端代码中一样出现。

您可以: - 不将它们设置为禁用(会影响您的用户体验) - 在 POST 之前启用它们(icky) - 使用隐藏字段

MVC 为复选框执行此操作,因此您可以在此处复制该想法:

<input type='text' name='entryid' />
<input type='hidden' name='entryid' />

POST 使用输入的name字段,而不是它的id,因此可以有多个具有相同名称的输入。

然后 POST 将使用未禁用第一个输入(因此不要将隐藏的输入放在第一位...)

然后只需更新 jquery 以将值应用于两个输入(如果您还希望它显示在 UI 中)而不是通过 id,例如:

$("name[entryid]").each(function() { $(this).val(newvalue); });

(其他设置方法可能更好,不检查是否.val()适用于所有,可能仅适用于第一个)


查看完整回答
反对 回复 2021-10-14
  • 2 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信