открыть новое окно на той же странице небольшого размера

у меня есть jsp page, и при нажатии на submit button открывается новая страница на той же странице, но я хочу, чтобы new page(window) открывал inside same page, но имел меньший размер, как вы могли бы видеть на многих веб-сайтах. after clicking submit button a new page will be opened in a less size, как мне это сделать с помощью jquery/javascript?

index.jsp

<form action="newwindow.jsp" target="_self">
<input type="submit value="click here"/>
</form>

Любые идеи, пожалуйста


person Tom    schedule 29.02.2012    source источник
comment
Под «новой страницей (окном)» вы подразумеваете модальное окно?   -  person Rory McCrossan    schedule 29.02.2012


Ответы (2)


Ниже должен работать ваш пример кода, подумайте, что вы искали target="_blank", а не _self, поскольку _self - это то же окно и имеет тот же эффект, что и вообще не имеет целевого значения. Также не думайте, что target="_blank" в наши дни очень поощряется, плюс в браузерах с вкладками он просто откроется в новой вкладке и не будет изменять размер.

Надеюсь, нижеследующее поможет

<form target="popup" action="google.com" onsubmit="window.open('', this.target,    'width=300,height=300,resizable,scrollbars=yes'); return true;">
<input type="submit" value="click here"/>
</form>

Новый пример кода, основанный на попытке центрировать всплывающее окно.

Я думаю, что вопрос сбивает с толку, поскольку неясно, обращается ли всплывающее окно к материалам на стороне сервера или нет, и нужен ли ему доступ к содержимому формы. Другой ответ, предложенный на этот вопрос, также может подойти вам в зависимости от ваших обстоятельств. Ниже приведен мой исправленный код, надеюсь, он поможет, но не уверен на 100%, так как контекст немного сбивает с толку.

<script>
function openWindow(h, w, url) {
  leftOffset = (screen.width/2) - w/2;
  topOffset = (screen.height/2) - h/2;
  window.open(url, this.target, 'left=' + leftOffset + ',top=' + topOffset + ',width=' + w + ',height=' + h + ',resizable,scrollbars=yes');

}
</script>
<form name="form2" id="form2" method="post" action="google.com" onsubmit="openWindow(300, 300, 'google.com');">
<input type="submit" value="click here"/>
</form>
person ChrisM    schedule 29.02.2012
comment
+1 за ваш ответ, но как я могу перевести это окно в среднее положение, указав его положение? - person Tom; 29.02.2012
comment
Спасибо mindandmedia. @tom в window.open вы можете указать смещение влево и вверх, которое вы хотите, чтобы размер браузера/2 меньше половины размера всплывающего окна, т.е. (ширина браузера/2)-(ширина всплывающего окна/2). Left и top задаются так же, как параметры ширины в моем примере. screen.width и screen.height должны получить разрешение браузера - person ChrisM; 29.02.2012
comment
Должен был упомянуть, что в событии onsubmit вы, вероятно, захотите переместить ссылку window.open в свою собственную функцию, чтобы в функции вы могли выполнять screen.width и screen.height, а затем вызывать window.open с вычисленными значениями, например при отправке = открытое окно (100 300); а затем иметь функцию openWindow в части ‹script› страницы или внешний .js - person ChrisM; 29.02.2012
comment
Хорошо, здесь появляется ошибка, не могли бы вы отредактировать свой код, чтобы я мог видеть это новое окно в средней позиции? - person Tom; 29.02.2012

Я совершенно не уверен, понимаю ли я ваш вопрос, но, может быть, это вам поможет?

<a class=".openWin" href="_#">click here</a>

$('.openWin').click(function(ev){
    window.open('/newwindow.jsp','Title','width=200,height=400');
    ev.preventDefault();
    return false;
});

если это не то, что вы имели в виду, я предлагаю взглянуть на плагин диалогового окна jquery.

редактировать после комментариев:

возможно, вы пытаетесь сделать что-то, что не требует обращения к серверу. если все, что вам нужно сделать, это открыть «окно», содержащее значение из формы. вы можете получить доступ к любому значению поля формы, подобному этому...

var formFieldVal = $('input[name="myInput"]).val();

Теперь вы можете (также с помощью jquery) создать «окно» следующим образом:

var divWindow = $('<div class="overlay"><div>' + formFieldVal + '</div></div>');

и добавьте его в свой документ

$(body).append(divWindow);

Теперь стилизуйте динамически добавляемые элементы div следующим образом (css), и вы получите вид окна:

.overlay {
     visibility: hidden;
     position: absolute;
     left: 0px;
     top: 0px;
     width:100%;
     height:100%;
     text-align:center;
     z-index: 1000;
}

.overlay div {
     width:300px;
     margin: 100px auto;
     background-color: #fff;
     border:1px solid #000;
     padding:15px;
     text-align:center;
}
person mindandmedia    schedule 29.02.2012
comment
вы определенно можете заставить его работать, просто хотел показать вам, что вы можете вызвать window.open, чтобы открыть новое окно. - person mindandmedia; 29.02.2012
comment
- это значения параметров формы, также вызываются так же, как уже вызывались. - person jogesh_pi; 29.02.2012
comment
извините, я не понимаю этот комментарий, пожалуйста, перефразируйте - person mindandmedia; 29.02.2012
comment
я не знаком с asp, но если у меня есть текстовое поле, и я хочу получить значение текстового поля во всплывающем окне, то так же, как я вызываю текстовое поле, как мы вызываем php $_POST['text_field'] или мы передаем его URL-адрес всплывающего окна, например /newwindow.php?text=sometext - person jogesh_pi; 29.02.2012
comment
+1 для диалогового окна jQuery. Я ненавижу страницы, которые открываются в новом окне, а не в поддельном. - person Tx3; 29.02.2012