JavaScript и натиснат бутон
26 отговора
709 прегледа
ПОЯСНЯВАМ :)
Значи правя проверка на формата с onSubmit="return func()" за да проверя дали всички полета са поплнени. Има два субмит бутона, защото при единия няма значение дали са попълнени полетата, но пак трябва да ги изпрати към формата ако все пак има нещо. За това искам да разбера кой бутон е натиснат. Ако имате друго предложение да заместя тая проверка без да ми трябва да знам с кой бутон е субмитнато кажете.
Благодаря за отговорите все пак.
Благодаря за отговорите все пак.
Re: ПОЯСНЯВАМ :)
Може да сложиш чекбосче, което ако е маркирано да има проверка (или обратното) и да си го нагласиш да е маркирано или не по подразбиране.
Re: ПОЯСНЯВАМ :)
Виж, ако не ти стигат 20 отговора и една напълно завършена страница за този елементарен въпрос, просто не знам какво може да ти помогне.

Ми ...
Ми по-този начин е малко по-"екзотично" и интересно
ето работещо решение лесно приложимо и за повече submit-ти - проверявам и за натиснат enter в текстбокс. Освен това е валиден XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[линк]">
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251"/>
<script type="text/javascript">
<!--//
/*
Глобална променлива която съдържа
кои от субмит бутоните е натиснат ..
*/
var clickedSubmit=new String();
function setSubmitBehaviour()
{
var allInputs=document.getElementsByTagName("INPUT");
for(j=0 ; j < allInputs.length ; j++)
{
if( allInputs[j].type=="submit")
{
allInputs[j].onclick=function(evnt)
{
var isIe = (typeof(evnt) == 'undefined');
if(isIe)evnt=event;
var el = (!isIe?evnt.target:evnt.srcElement);
/*
Ето тука el ти е елемента
извикал функцията ...
*/
clickedSubmit=el.name;
evnt.cancelBubble = true;
}
}
}
}
function validateForm()
{
/*
Ако submit1 е натиснат
направо пращаме
*/
if(clickedSubmit=="submit1")
{
return true;
}
else if(clickedSubmit=="submit2")
{
/*
Ако submit2 е натиснат
проверяваме полетата ..
*/
var _form=document.getElementById("myform");
for(j=0;j<_form.length;j++)
{
if(!_form[j].value)
{
alert("Моля попълнете всичките полета!");
return false;
}
}
return true;
}
else{
alert("Трябва да изберете поне единия от двата submit-a!");
return false;
}
}
//-->
</script>
</head>
<body onload="setSubmitBehaviour();">
<form id="myform" action="somewhere.php" method="post" onsubmit="return validateForm();">
<div>
<input type="text" id="mytext" name="mytext"/>
<input type="submit" value="submit1" name="submit1"/>
<input type="submit" value="submit2" name="submit2"/>
</div>
</form>
</body>
</html>
Re: ПОЯСНЯВАМ :)
Че за кво ти е толкова да го проверяваш при клиента ?
На новата ми играчка (win2003 enterprise. server evulation). никакви Шава/ВБ или квито и да е там скриптове не вървят по дифолт на експлодера.
Провери си го на скрипта направо и му подай формата с маркирани полета, които трябва да попълни. Предполагам че 5-10-20 К на никой не са му проблем вече :-))))
П.С. Държа да отбележа че страницата на абв изглежда много постна, а датата е направо смешна без скриптови езици в браузера ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
На новата ми играчка (win2003 enterprise. server evulation). никакви Шава/ВБ или квито и да е там скриптове не вървят по дифолт на експлодера.
Провери си го на скрипта направо и му подай формата с маркирани полета, които трябва да попълни. Предполагам че 5-10-20 К на никой не са му проблем вече :-))))
П.С. Държа да отбележа че страницата на абв изглежда много постна, а датата е направо смешна без скриптови езици в браузера ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: ПОЯСНЯВАМ :)
Ебаси кретенията - и на XP със SP2 е така. На страница със скрипт таг в хед-а без никакво съдържание и src (просто плейсхолдърче), IE разправя, че бил блокирал пътеншъли хармфул кънтент. Фен съм на лекото JS, без разни попъп и редирект простащини и ме е яд, че покрай тях се блокират свестни неща.