Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не работает onsubmit = ("return false;") (https://javascript.ru/forum/misc/22875-ne-rabotaet-onsubmit-%3D-return-false%3B.html)

czp 03.11.2011 20:41

не работает onsubmit = ("return false;")
 
Код:

<script type="text/javascript" >document.forms[0].onsubmit = ("return false;")</script>
такая конструкция работает только в опере, в остальных браузерах, не робит как исправить?
в чем проблема?
--------

Код:

form method="post" action="setting.php" onsubmit="return false">
такой вариант не годится, необходимо в самом скрипте что бы был

ksa 03.11.2011 20:44

Как вариант...

<script type="text/javascript" >
   document.forms[0].onsubmit = function(){return false;};
</script>

trikadin 03.11.2011 22:06

Цитата:

Сообщение от czp
работает только в опере

Опера как всегда)

czp 04.11.2011 11:11

тогда у меня не работает такая конструкция почему?
function formaddfunction() {
  var oforms = document.forms;
  var fmethod;
  for (i = 0; i < oforms.length; i++) {
	fmethod = oforms[i].method;
    oforms[i].onsubmit = function() { sendquery(this, fmethod); return false; };
  }
}

есле без sendquery(this, fmethod); то работает, а с ней работает только первая последняя форма, а верхние формы нет, и когда грузится штмл он автоматически запросы с верхних форм шлет пустые ячейки
function formaddfunction() {
  var oforms = document.forms;
  var fmethod;
  for (i = 0; i < oforms.length; i++) {
	fmethod = oforms[i].method;
    oforms[i].onsubmit = ('sendquery(this, '"+fmethod+"'); return false;');
  }
}

а так робит все четко но только в опере))
----------
что подскажете?

ksa 04.11.2011 11:28

Цитата:

Сообщение от czp
тогда у меня не работает такая конструкция почему?

Почём мне знать... Я на огрызках гадать не умею. У меня всё работает... :D

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Go() {
	alert(1);
};
</script>
</head>
<body>
<form action='http://javascript.ru'>
	<input type='submit' value='Test' />
</form>
<script type="text/javascript">
document.forms[0].onsubmit=function(){
	Go(); 
	return false;
};
</script>
</body>
</html>

czp 04.11.2011 14:55

так правильно, у вас там на одну форму работает, у меня тоже когда одной форме присваеваешь, вы же на цикл посмотрите она перебирает все формы которые только есть, есле 20 форм то он каждой форме присваивает онсубмит

ksa 04.11.2011 17:48

Вот, не 20 форм конечно... Но все равно ничего не отправляется...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Go() {
	alert('Все равно форма не отправится...');
};
</script>
</head>
<body>
<form action='http://javascript.ru'>
	<input type='submit' value='Test' />
</form>
<form action='http://javascript.ru'>
	<input type='submit' value='Test' />
</form>
<form action='http://javascript.ru'>
	<input type='submit' value='Test' />
</form>
<form action='http://javascript.ru'>
	<input type='submit' value='Test' />
</form>
<script type="text/javascript">
var i=0;
while (document.forms[i]) {
	document.forms[i].onsubmit=function(){
		Go(); 
		return false;
	};
	i++;
};
</script>
</body>
</html>

czp 04.11.2011 18:35

нашел свой бок)) ваше схема полностью работает, огромное спасибо то у меня бока с ПОСТ и ГЕТ по циклу

тему закройте

czp 04.11.2011 22:05

function formpg() {
  var oforms = document.forms;
  var fmethod;
  for (i = 0; i < oforms.length; i++) {
    fmethod = oforms[i].method;
    oforms[i].onsubmit = function() { sendquery(this, fmethod); return false; };
  }
}

есть такая конструкция, суть ее такова, что она считывает все формы, и всем формам задает
sendquery(this, fmethod); return false;
------
fmethod - это метод передачи формы тоесть ПОСТ или ГЕТ
все отлично робит, но один момент не работает,sendquery(this, fmethod) - он всегда подставляет метод последней формы, тоесть
есле идет 2 формы первая к примеру пост а вторая гет, то во все формы он поставит гет - sendquery(this, fmethod=ГЕТ)
sendquery(this, 'get')


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

jazzz13 04.11.2011 22:30

function formpg() {
  var oforms = document.forms;
  for (i = 0; i < oforms.length; i++) {
    (function(i){
         var fmethod = oforms[i].method;
         oforms[i].onsubmit = function() { sendquery(this, fmethod); return false; };
    })(i);
  }
}
Если я верно понял вопрос, то тебе нужно попробовать как написано выше. Если это то, что нужно, то почитай про "замыкания".

UPD Господа профессионалы, теперь вопрос от меня: мы же можем и не посылать 'i' в замыкающею функцию, верно? или это, все таки, обязательно? Вопрос касается данного случая.


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