【问题标题】:Php, Javascript - Dynamic form id's and dynamic validationPhp, Javascript - 动态表单 ID 和动态验证
【发布时间】:2012-08-24 15:26:19
【问题描述】:

我的javascript编程技能很少,所以这一定是它的问题。我的问题并没有那么复杂,但我就是找不到答案,我几乎尝试了所有方法,但正如我所说,我在 javascript 编程方面很蹩脚。

我的问题是,我有一个 php 页面,在这个页面上有多个由 mysql 查询生成的表单。我使用它们将动态生成的隐藏字段值发布到另一个 php 文件中,并且在该文件中我可以使用它们的发布值而无需刷新主页。表单 ID(或名称)也由 mysql 查询生成。我使用 javascript 来验证 (?) 表单并将其隐藏的内容发送到另一个页面。

Javascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
        $("#1").validate({
            debug: false,
            submitHandler: function(form) {
                $.post('process_like_dislike.php', $("#1").serialize(), function(data) {
                    $('#results').html(data);
                });
            }
            });
    });
    </script>

如您所见,本例中的表单id为1。我在一页上生成近40个唯一表单,这取决于mysql查询。

PHP:

<form name='$formnumber' id='$formnumber' action='' method='POST'>
<input type=hidden value='$us_id' name='us_id' id='us_id'>
<input type=hidden value='$an_id' name='an_id' id='an_id'>
<input type=hidden value='1' name='on' id='on'>
<input type=submit class=something value='' title='Something'>
</form>

我不知道如何使 javascript 代码在提交时动态验证所选表单。我试图在 javascript 中获取 php formnumber 变量,但这没有帮助。不知道有没有别的办法,我只知道这个。我需要将动态生成的隐藏值传递给另一个页面,但我需要一个动态生成的javascript,否则我不知道。

这段代码的主要概念是,我创建了一个页面,您可以在其中对某事物进行评分,并且该事物具有我需要以帖子格式获取的隐藏值,因为这是我可以决定哪个按钮具有的唯一方法被按下在第二个 php 文件中执行 mysql 查询而不刷新当前文件。我不想要简单的帖子,因为我会丢失上一页并且我不想刷新页面。

请帮帮我,谢谢。

【问题讨论】:

  • 您是否要为页面上的所有表单使用相同的代码?我认为您应该能够通过将 .validate 调用更改为 $("form").validate 并将另一个 $("#1") 调用更改为 $(this)

标签: php javascript forms validation dynamic


【解决方案1】:

@Michael Wheeler 的解决方案比我最初想出的更优雅——但是,'this' 没有设置为表单(我测试过),所以你必须将他的解决方案更改为 $(form)其他 $("#1") 而不是 $(this) ,它将完美运行。 =)

【讨论】:

  • 如果我使用 $(form) 或 $(this) 帖子值将为空,但它会将我带到另一个页面。我需要隐藏的表单值,所以我认为这不起作用。有什么解决办法吗?
  • 我认为问题已经解决了:function submitreg (id){ $.ajax({ type: "POST", url: "process_like_dislike.php", data: $(id).serialize( ), 成功: function(data){ $('#results').html(data); } });我使用了这样的 onclick 事件: $formid 保存动态生成的表单 ID。还是谢谢。
  • 如果您对仍然以与最初相同的方式使用 validate 插件感兴趣:当出于任何原因将 validate 函数应用于 $('form') 列表时,它只会起作用(正确)使用 1 个表单(我刚刚发布了一个指向我的测试代码的链接(当我之前测试时它是使用单个表单)。但这将适用于任何数字:link 无论如何,我的测试中有重复的 ID代码,所以我知道 html 不会验证,但 id 根本不需要 - 我只是把它们留在里面,因为它们是原始表单的一部分。
【解决方案2】:

您将从 AJAX 中受益匪浅: http://www.w3schools.com/ajax/default.asp 可能来自 jquery,虽然我知道你没有提到它,以简化你的 AJAX 问题: http://api.jquery.com/jQuery.ajax/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多