【问题标题】:open new window / tab after form submit using an drupal javascript invoke使用drupal javascript调用提交表单后打开新窗口/选项卡
【发布时间】:2012-05-08 15:53:45
【问题描述】:

是的,这个问题有时会被问到。但我找不到我的问题的答案。 我在这里发布了我的问题,因为我猜它与 php / javascript 相关,然后是 drupal。

所以基本上我有一个经过验证的表单,在提交部分我在 php 中有一个(drupal hook)函数,我可以在其中添加/修改代码。 此函数捕获表单字段并将它们存储在数据库中。 这意味着这些字段已正确填写,因此我想在这里实现一些东西,为用户打开一个新选项卡或窗口,而无需关闭当前选项卡或窗口。

所以我知道你不能从 php 调用 javascript 来使用像 window.open() 这样的东西,但无论如何我可以让它调用这个 window.open() 吗?

如果你有任何不同的方法,我也愿意接受。

【问题讨论】:

    标签: php javascript function drupal-7


    【解决方案1】:

    您可以使用锚元素来提交表单和打开新窗口:

    <script>
    
       function submitMyForm()
       {
          // Validate form fields here
          // ...
    
          // If form is valid, submit it
          myForm.submit(); 
       }
    
    </script>
    
    <a href="javascript:submitMyForm();" target="_blank">Submit Form</a>
    

    【讨论】:

    • 但是如果提交了表单但没有填写正确的字段,用户会被带到一个新窗口吗?
    • 所以你调用一个函数来验证然后提交它。查看我的编辑。
    • 如果我不想使用 javascript 进行验证(我的表单是使用 php 验证的)我实际上通过将window.open() 放在处理成功表单提交的登录页面上来修复它。一个问题仍然存在...window.open() 被视为弹出窗口并被现代浏览器阻止。
    • 您可以使用 PHP from 使用 AJAX 验证您的 Javascript。使用 jQuery,您将进行 ajax() 调用,将表单值发送到 PHP 脚本进行验证,在 success: 回调中,放置表单提交部分。
    • 这是一个选项,但这并不能解决我现在遇到的问题。但我会接受这个作为我最初问题的解决方案。
    猜你喜欢
    • 2012-11-27
    • 2014-09-20
    • 2012-02-18
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多