【问题标题】:Click a submit button with javascript单击带有 javascript 的提交按钮
【发布时间】:2015-02-03 17:50:41
【问题描述】:

我有以下脚本:

if( condition ){
  echo '<form action="url" name="myForm" method="post">';
    echo '<input type="hidden" name="val" value="yes">';
    echo '<input type="submit" name="Ok" value="Ok">';
  echo '</form>';
}

当条件满足时,提交按钮会出现,我希望它被javascript点击,所以表单将被提交,我可以使用页面上隐藏的post值从action url。"

我尝试为提交按钮添加一个 id,然后使用 click();但不起作用。我也尝试创建一个函数并使用 this.form.submit 但它不起作用,因为该操作发生在可以发送隐藏值之前。有什么想法吗?

【问题讨论】:

  • 你为什么还要费心回到浏览器呢?只需include 一个包含您需要的功能的脚本,然后直接调用它们会更简单。
  • 什么?我只需要在另一个页面上使用隐藏值,但是为了发送值,我需要一个提交按钮(或至少要提交的表单)。我需要自动点击按钮(当它出现时) ,所以给人的印象是没有形式。
  • 什么更简单? “获取您拥有的数据。使用它运行代码”或“将您拥有的数据发送到浏览器。请求浏览器将数据发送回服务器。使用它运行代码”。
  • 第二个。但是可以用ajax来完成,我已经尝试过那个但不适合我的需要!
  • 当条件为真时,为什么不直接向其他页面发送帖子请求,请参阅lornajane.net/posts/2010/…

标签: javascript php jquery forms


【解决方案1】:

所以问题是提交时你没有得到隐藏字段

检查fiddle。我刚刚更改了post请求以查看是否传递了参数,您可以稍后更改它

将表单 ID 设置为 myForm,将按钮 ID 设置为 ok

$(document).ready(function () {
    if ($("#myForm").length) {
      $("#ok").trigger('click');
        var url = window.location.href; 
        console.log(url);
    }

});

我正在做的是在控制台上打印 url。所以去你的浏览器控制台查看 url,我正在获取带有参数的 url url?val=yes&amp;Ok=Ok

【讨论】:

  • 还有一件事,$("#myForm").length 检查表单是否有内容?因为据我所知 .length 用于返回字符串的长度,而表单中没有字符串,只有一个按钮
  • $("#myForm").length 当该 id 在 html 页面中时返回 1,如果 id 不在页面中则返回 0。因此,如果您的 php 如果条件为真,那么具有该 id 的表单将放置在 html 页面中返回 1(因为 jquery 只会在 html 页面中搜索),如果 php 条件为 false,它不会将表单放在返回 0 的 html 页面中。尝试在 fiddle 中删除表单的 id 并检查如果您的 php 条件是否会产生相同的效果是假
【解决方案2】:

试试这个可能会奏效。

首先在你的提交按钮中添加一个 id

echo '<input type="submit" id="submit" name="Ok" value="Ok">';

然后你可以在这里使用触发器,就像下面的代码一样

$('#submit').trigger(submit);

复制下面这对我有用的代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>


<?php 

$con=4;
if( $con==4 ){
  echo '<form  name="myForm">';
    echo '<input class="a" type="hidden" name="val" value="yes">';
    echo '<input id="submit" type="submit" name="Ok" value="Ok">';
  echo '</form>';
  echo "<script>
  jQuery('form').submit(function(e){
         e.preventDefault();
         var data=$('.a').val();

         $.post(
            'page2.php',
            {value:data},
            function(data){
                alert(data);
            }
         );

     });
         jQuery('form').trigger('submit');


</script>
         ";
}

?>

【讨论】:

  • 如果你的条件为真那么提交按钮会自动点击然后你的隐藏输入字段值会发送另一个页面,你想要这个吗?
  • 是的,这正是我要找的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2012-11-22
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多