0

我对 jQuery 很陌生,我不知道该怎么做,以及是否可以在不手动编辑插件的情况下完成。

假设有一个像这样的简单形式:

<form action="page.php" method="post">
Name: <input type="text" name="Your name" id="contact-name" value="" />
Email: <input type="text" name="Your email" id="contact-email" value="" />
</form>

当您以“标准”方式或使用 ajaxSubmit() 提交时,请求的值采用字段名称的标签,因此在 page.php 中我将拥有:

$_POST['Your name'];
$_POST['Your email'];

相反,我想用字段的id标记提交的值:

$_POST['contact-name'];
$_POST['contact-email'];

有没有办法用 jquery 和 ajaxsubmit() 插件来做到这一点?而且,也许,即使正常使用表单,也有办法做到这一点?

ps:是的,我知道,我可以将字段的名称和id属性都设置为'contact-name',但是包含相同值的两个属性如何有用呢?

4

3 回答 3

2

根据 HTML 规范,浏览器应该提交name属性,该属性不需要在元素之间是唯一的。

一些服务器端语言,例如 Rails 和 PHP,采用具有某些相同名称的多个元素并将它们序列化为数据结构。例如:

<input type="text" name="address[]" />
<input type="text" name="address[]" />

如果用户1 Infinite Loop在第一个框和Suite 45第二个框中输入,PHP 和 Rails 将显示 ["1 Infinite Loop", "Suite 45"] 作为address参数的内容。

这都与name属性有关。另一方面,该id属性旨在唯一地表示页面上的元素。可以使用 CSS 引用它,也可以#myId在原始 JavaScript 中使用document.getElementById. 因为它是独一无二的,所以在 JavaScript 中查找它非常快。在实践中,您会使用 jQuery 或其他库,它们会对您隐藏这些细节。

人们对 and 使用相同的属性值是相当普遍的idname但您在提交表单时唯一需要关心的是name. jQuery 表单插件非常接近地模拟浏览器行为,因此同样适用于ajaxSubmit.

于 2009-07-07T07:04:26.053 回答
1

这是表单在 HTML 中的工作方式。

此外,ID 不适用于复选框和单选按钮,因为您可能会有多个具有相同名称(但值不同)的控件,而 HTML 元素的 id 属性在您的文档中必须是唯一的。

如果你真的想要,你可以创建一个预处理器 javascript 函数,将每个表单元素的名称设置为 id 值,但恕我直言,这不是很聪明。

于 2009-07-07T06:46:17.963 回答
0
var name = $("#contact-name").val();
var email = $("#contact-email").val();
$.post("page.php", { contact-name: name, contact-email: email } );

这将允许您发布带有自定义属性的表单。

于 2009-07-07T06:47:13.560 回答