更改隐藏值并使用 onclick for href 提交表单

Posted

技术标签:

【中文标题】更改隐藏值并使用 onclick for href 提交表单【英文标题】:Change hidden value and submit form with onclick for href 【发布时间】:2015-11-02 16:17:26 【问题描述】:

我目前有多个链接充当按钮,每个链接都有不同的形式,其中隐藏值存储 ID。问题是我正在使用引导程序并且它弄乱了样式,并且解决它的唯一方法似乎是有一个隐藏的值,一旦单击链接,它将使用选定的 ID 进行更新。

我目前有<a href="javascript:;" class="list-group-item list-group-item-default" onclick="parentNode.submit();"> 作为链接,我也一直在寻找一种编辑值的方法。不幸的是,似乎每个人都强烈建议不要走 javascript 路线并改用 jQuery,但我不太确定如何将两者联系起来。

我找到了this link,它有一个很好的例子,说明如何使用 jQuery 来更改值,尽管我可以通过一些帮助将它放在一起,因为我不确定是否可以使用jQuery 代码也可以提交表单,或者如果我应该创建一个单独的 javascript 函数来运行 jQuery,然后提交表单。

如果 javascript 路由实际上没有任何问题,看起来 this 可以完成这项工作,只是想先检查一下。

【问题讨论】:

【参考方案1】:

首先,jQuery 实际上是 Javascript,它只是一个扩展——如果您使用 jQuery,那么您就是在编写 Javascript。 jQuery 刚刚变得如此流行,以至于有些人将其混为一谈。

您可以将要提交的表单作为参数传递给函数,如下所示:

function handleClickAction(formElement) 
    // change values
    formElement.submit();

使用给定的标记,您可以这样称呼它:

<a href="javascript:;" class="list-group-item list-group-item-default" onclick="handleClickAction(parentNode);">

当然,如果您需要知道要更改什么值和/或如何更改,您可以向函数调用添加更多参数。

一般来说,您使用的解决方案不是很优雅而且是多余的,但是如果您想使用内联代码,这可能是一种合适的方式:)

【讨论】:

【参考方案2】:

如果你正在做内联事件,那就在一行中做

onclick="document.formName.elementName.value='foo';this.form.submit();"

【讨论】:

谢谢,刚开始运行,没想到这么容易运行哈哈,不过从我收集到的信息来看,这不应该是不好的做法吗?【参考方案3】:

Bootstrap 的插件依赖于 jQuery 来运行。在这种情况下,当您将 jQuery 添加到引导程序设计中时,您会看到更强大的功能(不仅仅是 CSS 样式)。既然如此,这是一个 jQuery 版本,可以满足您的要求:

注意:已修​​改以回答 cmets 中的后续问题。现在使用点击元素的索引而不是原始帖子请求的 id,因为没有为链接分配 id 属性。

jQuery(function($) 
    $('#form_of_forms a.list-group-item').click(function(e) 
        e.preventDefault();
        $('#dynamic_form_id').val($(this).index()+1);
        $('#form_of_forms').submit();
    );
);

此外,将href="javascript:;" 替换为href="#" 并从每个链接中完全删除onclick="..." 属性。

【讨论】:

嘿,谢谢,通过搜索隐藏输入来查找输入似乎有点乱,我可以将$form.find('input[hidden]') 更改为$('#input_id') 吗?也就是说,如果你有一个alist-group-item 类的链接列表和一个隐藏字段,你是否写它来立即开箱即用? 是的。由于您没有提供隐藏字段的 id,我只是依靠表单中只有一个这一事实。如果你已经有了 id,你可以简化选择器。 我只真正了解 php,所以看看它是如何工作的肯定很有用,jQuery 让你做到这一点非常酷。我现在试着让它运行起来,只是一个关于使用closest('form') 的问题,它是像parentNode,还是它只是找到附近的任何形式,因此如果有多种形式不是一个好主意? 我在将它与 html 链接起来时遇到了一些问题,我尝试将它放在头部和链接下方,它似乎创建了一个名为 naptha_container 的空 div:P 不,它不会创建任何节点。也许您可以发布一个指向您正在尝试做的事情的链接,或者创建一个小提琴。就头部或链接下方而言,您需要将其放入 dom 就绪事件或页脚中。否则它将在它引用的元素实际存在之前运行。

以上是关于更改隐藏值并使用 onclick for href 提交表单的主要内容,如果未能解决你的问题,请参考以下文章

Onclick 显示/隐藏仅 div 且不带 href 的 css。没有jQuery

如何使用 Jquery 更改另一个图像的 <a href"" onclick?

jQuery使用数据目标更改带有onClick侦听器的一组单选按钮标签的innerHtml

Onclick 在 div 之外隐藏 div [重复]

如何根据设备宽度更改下载按钮的href和onclick功能

从代码隐藏更改 IFrames InnerHtml