带有 JQuery 的禁用字段出现在 C# 服务器端的请求中

Posted

技术标签:

【中文标题】带有 JQuery 的禁用字段出现在 C# 服务器端的请求中【英文标题】:Disabled fields with JQuery appearing in request on C# server side 【发布时间】:2019-08-24 20:14:12 【问题描述】:

我正在使用 JQuery 动态禁用客户端的某些字段。在提交表单时,它们会出现在服务器端请求中。就我浏览文档而言,它应该排除禁用的输入。如果输入为空,则以下代码禁用输入:

  var partnerInputs = $('.partner.newPartner .row');
  var firstName = newPartnerInputs.find(":input[name$='.FirstName']");
  var lastName = newPartnerInputs.find(":input[name$='.LastName']");
  var emailAddress = newPartnerInputs.find(":input[name$='.EmailAddress']");
  if ($.trim(firstName.val()).length === 0 && $.trim(lastName.val()).length === 0 && $.trim(emailAddress.val()).length === 0) 
    firstName.attr("disabled", "disabled");
    lastName.attr("disabled", "disabled");
    emailAddress.attr("disabled", "disabled");
    reattachUnobtrusiveValidation($("#selectPartners"));
  

简单

form.submit()

reattachUnobtrusiveValidation 方法只是重新计算表单的验证。如果我使用

,它会忽略禁用的字段
$("#form").validate().form()

这是将表单发布到 C# 控制器。并且服务器端的模型甚至JS中的表单在提交之前都包含禁用的字段。我浏览了 html 表单帖子,它排除了禁用的字段。这里有什么问题?

【问题讨论】:

没有看到导致此行为的代码,我们无法真正帮助您找到错误。 如果这些值仍然出现在您的服务器端,那么您正在执行的 JS 显然不起作用。请记住,我和这里的其他人正在努力帮助你。我们所需要的只是能够做到这一点的信息。 人们已经阅读并理解了这个问题。您被否决了,因为这里没有足够的信息来为您提供答案。您描述的问题发生的原因有数百个,如果没有明确的逻辑示例说明您的逻辑会导致问题发生,人们只会浪费时间猜测。 这个问题已经有将近 10 年的历史了,为了提高所提问题的质量,本网站的指导方针已经发生了巨大的变化。如果您还没有,我建议您阅读它们。 @ManpreetSingh 我知道您的回答被否决可能会令人沮丧,但没有理由对 RoryMcCrossan 生气,他只是想帮助您,就像许多其他人会做的那样。如果您向社区提供您找到的所有相关信息,您就有更好的机会获得支持和回答。 【参考方案1】:

此功能的功能似乎是不发布该字段的值。这不能从 post 模型中省略输入/字段,但只能为该字段发布 null。

【讨论】:

以上是关于带有 JQuery 的禁用字段出现在 C# 服务器端的请求中的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Mobile:单击文本字段时如何禁用默认键盘?

使用 Jquery Validator 出现验证错误时如何避免或禁用表单提交

jquery 使字段不可编辑,没有只读或禁用

在jquery中启用和禁用文本字段[重复]

如何使用 jquery 禁用 android 键盘的弹出窗口?

在 UITextField 中禁用“定义”