Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Несколько target для form (https://javascript.ru/forum/dom-window/43163-neskolko-target-dlya-form.html)

Alfer 26.11.2013 02:49

Rise, Доброй ночи, я хочу введя в адресную строку сайт и нажать кнопку поиск, отобразить сайт в разных фреймах с разным размером, сейчас у меня 4 фрейма с различной шириной и высотой:

вот моя форма:
<div id="urlwrapper">
			<div class="logo"><img src="img/logo_rd_white.png" style="width:50px"/></div>
			<form id="urlform" name="form1" method="get" target="myURL">
			<input id="urlinput" name="goTo" type="text" name="url" onblur="if(this.value=='')this.value='Введите адрес сайта ...';" onfocus="if(this.value=='Введите адрес сайта ...')this.value='';" value="Введите адрес сайта ..." onclick='submitURL()'/>
			<button id="urlsubmit"><img style="margin-left:-8px" src="img/icons/magnifier.png"/></button>	
		</form>
	</div>


JS, который я использую для того чтоб вводить адреса в нужном мне формате

<script>
document.form1.onsubmit = function() {
	var url = document.form1.goTo.value;
	var validurl = 'http://www.';
	validurl += url.replace(/^(https?:\/\/(www\.)?|\/\/(www\.)?|www\.)/i, '');
	this.action = validurl;

}
</script>


и 4 фрейма

<iframe name="myURL" src="urlinput.html" height="360" width="320" scrolling="yes"></iframe>
<iframe name="myURL" src="urlinput.html" height="320" width="568" scrolling="yes"></iframe>
<iframe name="myURL" src="urlinput.html" height="620" width="358" scrolling="yes"></iframe>
<iframe name="myURL" src="waiting.html" height="384" width="640" scrolling="yes"></iframe>


с раличной шириной и высотой, сейчас в форме taget ="myURL" с одним это работает, а надо нажав в форме поиска и введя URL, отобразить его во всех фреймах одним нажатием

Rise 26.11.2013 03:41

<form name="form1">
	<input type="text" name="url" value="Введите адрес сайта ..." size="50" />
	<button type="submit">Go</button>
</form>
<iframe height="50" width="50"></iframe>
<iframe height="60" width="60"></iframe>
<iframe height="70" width="70"></iframe>
<iframe height="80" width="80"></iframe>

<script>
document.form1.url.onfocus = function() {
	if (this.value == this.defaultValue) this.value = '';
}
document.form1.url.onblur = function() {
	if (this.value == '') this.value = this.defaultValue;
}
document.form1.onsubmit = function() {
	var url = this.url.value;
	var validurl = 'http://www.';
	validurl += url.replace(/^(https?:\/\/(www\.)?|\/\/(www\.)?|www\.)/i, '');
	var iframe = document.getElementsByTagName('iframe');
	for (var key in iframe) {
		iframe[key].src = validurl;
	}
	return false;
}
</script>

Alfer 26.11.2013 04:14

Rise, а особой роли не будет играть если iframe будет обрамлен тегами подобным образом?
<ul>
  <li>
  <div><iframe height="50" width="50"></iframe></div>
  </li>
</ul>
<ul>
  <li>
  <div><iframe height="60" width="60"></iframe></div>
  </li>
</ul>
<ul>
  <li>
  <div><iframe height="70" width="70"></iframe></div>
  </li>
</ul>
<ul>
  <li>
  <div><iframe height="80" width="80"></iframe></div>
  </li>
</ul>

проверить работу JS пока нет возможности

ruslan_mart 26.11.2013 06:05

danik.js, ну так автору же походу нужно, чтобы тупо открывался сайт во фрэймах. :D
Это конечно можно решить по другому, просто меняя src у фрэймов. Но автору нужно через target вписть имена фрэймов, в который будет грузится action.

Цитата:

Сообщение от Alfer
action="javascript.ru" обойтись?

Не обойтись, обязательно должно быть javascript.ru

http://learn.javascript.ru/play/5099V

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="url" type="text">
    <input onclick="test()" type="button" value="test">
    <iframe name="fr" height="200px" width="100%"></iframe>
    <iframe name="fr" height="200px" width="100%"></iframe>

    <script>
      var url = document.getElementById('url'),
          fr = document.getElementsByName('fr');
      
      function test() {
        var v = url.value;
        if(v.indexOf('http://') == v.indexOf('https://')) {
          v = 'http://' + v;
        }
        for(var i=0; i<fr.length; i++) fr[i].src = v;
      }
    </script>

  </body>
</html>

danik.js 26.11.2013 08:49

Цитата:

Сообщение от Rise
document.form1.url.onfocus = function() {
    if (this.value == this.defaultValue) this.value = '';
}
document.form1.url.onblur = function() {
    if (this.value == '') this.value = this.defaultValue;
}

Вообще-то давно уже придумали placeholder.
Цитата:

Сообщение от Ruslan_xDD
danik.js, ну так автору же походу нужно, чтобы тупо открывался сайт во фрэймах.

Да когда наконец до тебя дойдет что форма может отправиться только один раз, при последнем submit(), в последний заданный target, даже если ты в цикле сменишь их тысячи. По крайней мере в хроме так.

ruslan_mart 26.11.2013 10:45

danik.js, не знаю, в опере в оба фрэйма отправляет.

Alfer 26.11.2013 16:50

не выходит ребятки, не получается

danik.js 26.11.2013 20:46

Цитата:

Сообщение от Rise
А как же IE

На дворе 11 версия. Не работает только в 8 и 9 версиях. Для них можно какой-нибудь placeholder.js прицепить.

Факт в том что большинство веб-разработчиков давно уже использует новый атрибут. Для демки так вобще тем более.

Alfer 26.11.2013 21:15

danik.js, это все хорошо, но ты бы по существу бы показал как правильно должно работать

Alfer 26.11.2013 21:28

Вложений: 1
Посмотрите, как мне все эти скрипты применить к моей схеме?

в первый слайдер вводим адрес и он грузится во всех остальных фреймах моделей смарфонов слайдера


Часовой пояс GMT +3, время: 09:01.