【问题标题】:how to differentiate between javascript submit and manually clicking submit如何区分javascript提交和手动点击提交
【发布时间】:2023-04-02 16:08:02
【问题描述】:

如何区分 javascript 触发提交和手动点击表单提交
下面的示例代码

 function myfunction()
 {
    document.getElementById("id_searchform").submit();
    return true;
 }

表格:

<div class='row'>
   <div class='col-md-4'>
      <div class='clszipcode' ><span>Enter Zipcode</span></div>
   </div>
   <div class='col-md-4'>
      <div class='clstxtzipcode' ><input type="text" name="zip_code" id="txtZipcode"></div>
   </div>
   <div class='col-md-4'>
      <div class='clsbtnzip' ><input type="submit" name="submit" id="btnSearch" value="Search" class="button_example"  ></div>
   </div>
</div>
<a href="#"  onclick="return myfunction();" >click to submit</a>

【问题讨论】:

  • 你知道当我的函数被调用时它是javascript触发的提交。
  • 采用隐藏输入并使用 javascript 提交提供不同的值。即&lt;input type="hidden" value="manual" name="submittype"&gt;在javascript中设置...submittype.value = 'js'
  • 如果我将 onclick 事件附加到 它将调用 myfunction() 和 validate()
  • validate() 是做什么的?仅单击“真实”提交按钮不会触发 myfunction() 然后...
  • 但是 myfunction() 触发 validate() 并且 validate 函数可能会设置一些变量,例如 real submit var realsubmit="yes"

标签: javascript jquery forms click submit


【解决方案1】:

让我看看我是否明白:

  1. 您想检测用户是否点击了提交表单的链接。
  2. 您想检测用户是否点击了提交按钮来提交表单。
  3. 您有另一个名为 validate() 的函数,它将以某种方式使用此信息。

如果是这种情况,请考虑使用一个变量来存储触发表单提交之前是否点击了链接。

  1. 将全局变量wasClicked初始化为false
  2. 点击链接时,将wasClicked 设置为true
  3. 设置wasClicked 后触发表单提交。
  4. 提交表单时运行validate()
  5. validate() 中检查if(wasClicked){...}

这是Working Example

【讨论】:

  • 顺便说一句,当浏览器中没有启用 JS 时,onsubmit 事件不会触发。那么在这种情况下,表单不会被隐藏输入污染。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 2015-12-23
  • 2019-08-27
  • 1970-01-01
  • 2015-12-01
相关资源
最近更新 更多