私は単純なフォームを持っています:
<form id="frm" action="process.php" method="post">
<input type="text" id="shortcut" name="shortcut" />
</form>
でprocess.php
:
$gomenu = $_POST['shortcut'];
if(strpos($gomenu, "/") === 0) {
//if $gomenu contains `/`, then it should open in new tab
header('Location: newTab.php'); //--> How to open this into a new tab?
} else {
header('Location: somePage.php'); //--> Redirect to somePage.php on the same tab
}
のshortcut
値が含まれている場合は/
、新しいタブにリダイレクトする必要があります。そうでない場合は、同じタブにリダイレクトします。どうやってするか?を使用してそれを行うことは不可能であることはわかっていますが、header();
その方法がわかりません。何か案は?ありがとう。
PS: フォームはメニュー コードで入力することを意図しており、shortcut
(SAP のように) 入力されたメニュー コードに基づいてページをリダイレクトする必要があります。ただし、特定のプレフィックスが含まれている場合は、別の方法を実装する必要があります。
アップデート
フォームの上に、次のスクリプトを追加しました。
<script>
$("#frm").ajaxForm({
url: 'process.php', type: 'post'
});
</script>
そして上process.php
:
$gomenu = $_POST['shortcut'];
if(strpos($gomenu, "/") === 0) {
print "<script>
window.open('newTab.php', '_newtab');
</script>";
} else {
header('Location: somePage.php');
}
しかし、その後、新しいポップアップ ウィンドウで開きました。newtabで開く方法は?
ANSWER (@fedmichの回答)
$(document).ready(function () {
$('frm#frm').submit(function(){
var open_new_tab = false;
var v = $('#shortcut').val();
if(v.match('/') ){
open_new_tab = true;
}
if ( open_new_tab ) {
$('frm#frm').attr('target', '_blank');
} else {
$('frm#frm').attr('target', '_self');
}
});
});