Jquery 验证 - 使用submitHandler 剥离表单数据

发布于 2024-09-06 05:39:10 字数 609 浏览 0 评论 0原文

我正在使用 Jquery 验证插件来验证并提交我的表单。

我希望能够在将表单数据发布到服务器之前从表单数据中删除不必要的表单字段值。

我认为 SubmitHandler 将是最好的地方 - 这是我的代码示例:

submitHandler: function(form) {
if (form.elements["billddress2"].value == "Suite/Apt"){
delete form.elements["billddress2"];    
}

if (form.elements["mobile"].value == "Mobile Number"){
delete form.elements["mobile"];
}

if (form.elements["questionid_46"].value == "Guest Email"){
delete form.elements["questionid_46"];
}

form.submit();
}

问题是数据仍然被传递。我知道我有正确的属性,因为我使用 form.elements["name"].value 测试了它们。

有人知道为什么我无法删除 HTMLFormElement 对象属性吗?

I'm using the Jquery Validation plugin to validate and submit my forms.

I want to be able to remove unnecessary form field values from the form data before they get posted to the server.

I figured that the submitHandler would be the best place for this - here is a sample of my code:

submitHandler: function(form) {
if (form.elements["billddress2"].value == "Suite/Apt"){
delete form.elements["billddress2"];    
}

if (form.elements["mobile"].value == "Mobile Number"){
delete form.elements["mobile"];
}

if (form.elements["questionid_46"].value == "Guest Email"){
delete form.elements["questionid_46"];
}

form.submit();
}

The problem is that the data still gets passed. I know that I have the right properties, since i tested them using form.elements["name"].value.

Anyone know why I can't delete HTMLFormElement Object properties?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何处潇湘 2024-09-13 05:39:10

问题是 delete 的目的是从对象中删除属性,而您却试图从 DOM 中删除元素。在您的回调函数中,form是一个DOM元素,因此您无法使用delete删除其子元素。您可以尝试在表单元素上使用 remove (您将拥有首先使用 $ 将它们转换为 jQuery 对象),如下所示:

submitHandler: function(form) {
  var form = $(form);

  if (form.elements["billddress2"].value == "Suite/Apt"){
    $('input[name="billddress2"]', form).remove();
  }

  if (form.elements["mobile"].value == "Mobile Number"){
    $('input[name="mobile"]', form).remove();
  }

  if (form.elements["questionid_46"].value == "Guest Email"){
    $('input[name="questionid_46"]', form).remove();
  }

  form.submit();
}

The problem is that delete is meant to remove properties from objects, whereas you're trying to remove elements from the DOM. In your callback function, form is a DOM element, so you can't remove its children with delete. You could try using remove on the form elements (you'll have to turn them into jQuery objects with $ first), like this:

submitHandler: function(form) {
  var form = $(form);

  if (form.elements["billddress2"].value == "Suite/Apt"){
    $('input[name="billddress2"]', form).remove();
  }

  if (form.elements["mobile"].value == "Mobile Number"){
    $('input[name="mobile"]', form).remove();
  }

  if (form.elements["questionid_46"].value == "Guest Email"){
    $('input[name="questionid_46"]', form).remove();
  }

  form.submit();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文