繁体   English   中英

如何在单击输入按钮时提交表单以及执行javascript函数?

[英]How to submit a form as well as execute a javascript function in clicking an input button?

该代码有效,但仅显示了标题,即如何执行sql查询以及javascript函数以更改表单提交中的innerHTML。

// HTML

<div id='heading'> </div>

//形成

<form method='post'>
<input type='submit name='option' value='option' onclick='myFunction()' > 
</form>

// sql查询

if(isset($_POST['option'])===true && empty($_POST['option']===true)){
                $sql2= 'SELECT * from maptable ORDER by price';
                $result = $mysql->query($sql2);

  }

// javascript函数

 <script>
    function myFunction(){
     document.getElementById('heading').innerHTML ='OptionName';
    }
    </script>

如果我的理解是正确的,则需要在执行PHP代码之前调用该函数。 只需将onclick="myFunction()"更改为onsubmit= "return myFunction()"

用try catch块替代document.getElemen....也是一种好习惯。

您目前执行此操作的方式将无法正常工作。 您直接将表单发布到同一页面,而没有AJAX,这意味着页面会刷新。 由于JavaScript是客户端,因此不会保留您设置的标题的innerHTML 有一百万种方法可以解决此问题。

解决此问题的最快方法是在PHP处理中声明想要的标题,然后将其输出到H1元素中(如果存在):

#PHP
if(isset($_POST['option'])===true && empty($_POST['option']===true)){
    $sql2= 'SELECT * from maptable ORDER by price';
    $result = $mysql->query($sql2);
    // Depending on what you want your Heading to be
    // $headingName = $_POST['option'];
    $headingName = "OptionName";
}

设置HTML标题如下:

<div id='heading'><?php echo isset($headingName) ? $headingName : '' ?></div>

另外,您的输入缺少引号,并且通过此更改,您不再需要JavaScript部分:

<input type='submit' name='option' value='option'> 
<input type='submit name='option' 

在这里查看您的代码。 您跳过引号应该是这样的<input type='submit' name='option'

如我所见,您的表单是在没有AJAX的情况下提交的,因此,一旦您单击“提交”按钮,页面将被重新加载并返回PHP脚本执行的结果。

如果要在提交之前运行“ myFunction”,则可以执行以下操作:

<form id="myForm">
  ...
</form>

<input type='button' name='option' onclick="myFunction()">

和“ myFunction”:

function myFunction(){
    document.getElementById('heading').innerHTML ='OptionName';
    document.getElementById('myForm').submit();
}

或者,如果您希望一段时间显示“标题” div,则可以使用超时提交表单:

function myFunction() {
  document.getElementById('heading').innerHTML = 'OptionName';
  setTimeout(function() {
    document.getElementById('myForm').submit();
  }, <timeout of submitting in milliseconds>);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM