【问题标题】:Execute javascript before submit提交前执行javascript
【发布时间】:2015-01-06 10:33:15
【问题描述】:

我知道标题听起来与其他一些线程相似,但有点不同。我有几个这样的按钮:

<input type=button name=Ok onclick='window.location="www.bla.com/bla.php"'>

当用户按下其中任何一个时,我希望运行 javascript 或 jquery 代码,但之后,我想发送到 www.bla.com/bla.php。

我有一个用于提交表单的 jquery 代码:

$( document ).ready(function() {
   $(':button').click(function(){
    document.getElementById('contact').submit();    
    }); 

jquery 代码有效,但按钮不...

【问题讨论】:

  • @Teemu 对不起,我忘了 window.location
  • 您在 Html 中混淆了 " 和 '。
  • @Fuzzyma 怎么样?两者在 JS 和 HTML 中都有效。
  • 是的,但建议使用 Html 中的“标准”
  • @PetruLebada 我猜你已经this same problem,提交表单将阻止设置新的window.location 工作。

标签: javascript php jquery


【解决方案1】:

试试这个

<input class="btn" type=button name=Ok data-href="location">

$( document ).ready(function() {
   $('.btn').click(function(){

    // as you have used jQuery selector you can use it here like this 
    $('#contact').submit();   

    var location = $(this).attr("data-href");

    window.location.href  =  location;
    }); 
});

【讨论】:

  • 你的答案可能有用,但我需要它更具体,因为我有很多按钮,每个按钮都会将你带到不同的页面
  • 您可以在单击按钮时为每个按钮在 data-href 中指定位置,它将获取该按钮的 url 并重定向到该 url
  • 可以在按钮的action属性中指定位置。
【解决方案2】:

我的解决方案是基于 jQuery 的。

这里的语法不正确:

<input type=button name=Ok onclick="www.bla.com/bla.php">

修改为:

<input type=button name=Ok data-href="www.bla.com/bla.php">

jQuery:

$( document ).ready(function() {
  $(':button').click(function(){
  var hrefCurr = $(this).attr('data-href');
  document.getElementById('contact').submit();
  window.location.href = hrefCurr;
});

【讨论】:

  • 对不起,我忘了 window.location .. 请再次检查我的问题
  • 这是动态完成的。请仔细阅读,它应该可以工作。
  • 如果 form.submit 成功,你的 javascript 将停止运行,你会执行 form.submit 失败吗?
【解决方案3】:

提交表单后不会执行任何 javascript。表单提交更改了 window.location 并停止了旧 window.location 中的 javascritpt 执行。

但你可以伪造它。

  • 使用 jquery 表单提交表单(如果 CORS 允许)

  • 或者让表单目的地的脚本重定向到您想要的位置。

  • 或提交到所需位置并让那里的脚本将表单数据发送到它应该去的地方

【讨论】:

  • 准确的说是可以执行一些JS,因为在加载新页面之前会有延迟,但是location.href的更改会立即被阻止。
【解决方案4】:

这样的东西可以完成这项工作吗?

<input type='button' name='ok_btn' id='ok_btn' value='Ok'  data-href="www.bla.com/bla.php" />

$(document).ready(
    function() {
        $('#ok_btn).on('click',function(){
            // Do your stuff
            // Finally:
            window.location.replace($(this).attr('data-href'));
        });
    }
);

【讨论】:

  • 这会起作用,因为表单没有在 sn-p 中提交。不过,这不是 OP 想要的。
  • 嗯,所以将window.location... 替换为$('#contact').attr('action',$(this).attr('data-href')); $('#contact').submit(); 可以吗?
猜你喜欢
  • 2019-10-21
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2014-10-19
相关资源
最近更新 更多