【问题标题】:jQuery ajaxSubmit(): ho to send the form referencing on the fields id, instead of the fields name?jQuery ajaxSubmit():如何发送引用字段 id 的表单,而不是字段名称?
【发布时间】:2009-07-07 06:42:11
【问题描述】:

我对 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() 插件来做到这一点? 而且,也许,即使是正常使用表单,也有办法做到这一点?

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

【问题讨论】:

    标签: forms jquery submit


    【解决方案1】:

    根据 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 属性旨在唯一地表示页面上的元素。可以使用 #myId 使用 CSS 和使用 document.getElementById 在原始 JavaScript 中引用它。因为它是独一无二的,所以在 JavaScript 中查找它非常快。在实践中,您会使用 jQuery 或其他库,它们会对您隐藏这些细节。

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

    【讨论】:

    • 好的,明白了。所以我将设置名称和 id 相等,我将使用 title 属性作为简短描述
    【解决方案2】:

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

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

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

    【讨论】:

    • 该死,我没有考虑复选框和单选按钮,你说得对,id 应该是唯一的......
    【解决方案3】:
    var name = $("#contact-name").val();
    var email = $("#contact-email").val();
    $.post("page.php", { contact-name: name, contact-email: email } );
    

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

    【讨论】:

    • 是的,我知道,但是插件也允许文件上传,我不喜欢重新发明轮子来创建另一个插件..
    • 啊。我知道了。我以为您只是在询问一般的 jQuery AJAX 调用。查看插件的源代码,似乎最简单的方法是修改插件以发送表单元素的“id”。
    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2020-02-25
    • 2015-05-08
    • 2022-10-21
    • 1970-01-01
    相关资源
    最近更新 更多