Php 使用drupal javascript调用在表单提交后打开新窗口/选项卡

Php 使用drupal javascript调用在表单提交后打开新窗口/选项卡,php,javascript,function,drupal-7,Php,Javascript,Function,Drupal 7,是的,这个问题经常被问到。但我找不到解决我问题的答案。 我把我的问题贴在这里是因为它比drupal更与php/javascript相关 因此,基本上我有一个经过验证的表单,在提交部分,我有一个php中的(DrupalHook)函数,可以在其中添加/修改代码。 此函数捕获表单字段并将其存储在数据库中。 这意味着字段填写正确,因此我想在这里实现一些功能,为用户打开一个新选项卡或窗口,而不关闭当前选项卡或窗口 因此,我知道您不能从php调用javascript来使用类似于window.open()的东

是的,这个问题经常被问到。但我找不到解决我问题的答案。 我把我的问题贴在这里是因为它比drupal更与php/javascript相关

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

因此,我知道您不能从php调用javascript来使用类似于
window.open()
的东西,但是否有其他方法可以让它调用此
window.open()


如果您有任何不同的方法,我也愿意采用不同的方法。

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

<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>

函数submitMyForm()
{
//在此验证表单字段
// ...
//如果表格有效,请提交
myForm.submit();
}

但如果表单已提交,但字段未正确填写,则用户将被带到一个新窗口?因此,您可以调用一个函数进行验证,然后提交表单。查看我的编辑。如果我不想用javascript验证(我的表单是用php验证的),我实际上通过将
window.open()
放在处理成功表单提交的登录页上来修复它。但还有一个问题
window.open()
被视为弹出窗口并被现代浏览器阻止。您可以使用AJAX从Javascript使用PHP进行验证。使用jQuery,您可以进行
ajax()
调用,将表单值发送到PHP脚本进行验证。在
success:
回调中,您可以放置表单提交部分。这是一个选项,但不能解决我现在遇到的问题。但我会接受这个作为我最初问题的解决方案。