JavaScript и натиснат бутон

26 отговора 709 прегледа
#1

JavaScript и натиснат бутон

Има ли начин във форма с два субмит бутона да разбера кой от двата е натиснат?

Отговор
в отговор на asdasdas #2

onclick

Чувал ли си за атрибута onclick?

Отговор
в отговор на asdasdas #3

Re: JavaScript и натиснат бутон

Направи си го просто с два бутона
и една функция която им я подаваш на OnClick ивента

function check(button) {
if (button.value == "button") {
document.test.submit();
}
else if (button.value == "button1") {
alert("bla");
}
}

<input type="button" name="button1" value="button" onClick="check(document.test.button1);">

Айде със здраве.

Just a human.
Отговор
в отговор на Matrix_N #4

не

Недей така да правиш, ако JS е изключен формата не може да се изпрати.

Отговор
в отговор на asdasdas #5

Re: JavaScript и натиснат бутон


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[линк]">
<html xmlns="[линк]" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Page</title>
<script type="text/javascript">
//<![CDATA[
var lastSubmit = null;
//]]>
</script>
</head>
<body>
<form id="form" enctype="multipart/form-data" method="post" action="" onsubmit="alert('submited via ' + lastSubmit);">
<fieldset>
<legend>Buttons</legend>
<p>
<button id="btnSubmit1" type="submit" onfocus="lastSubmit = this.id;"><strong>Submit 1</strong></button>
<button id="btnSubmit2" type="submit" onfocus="lastSubmit = this.id;"><strong>Submit 2</strong></button>
<button id="btnReset" type="reset"><strong>Reset</strong></button>
</p>
</fieldset>
</form>
</body>
</html>

Нещо такова...
(не е лошо да използваш button вместо input, понеже текста на бутона може да го markup-ваш)

Отговор
в отговор на asdasdas #6

Попрочети за event обекта ...

Така ще ти е по-удобно мисля аз ...


function showWhat()
{
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);
/*
Eto tuka el ti e elementa
izvikal funkciyata
*/

evnt.cancelBubble = true;
}
}
}
}



Отговор
в отговор на Учeщ #7

Re: Попрочети за event обекта ...

Хубаво, ама направи го по-сложно че така простее малко...



Отговор
в отговор на Paдo #8

забележка

Не забравяй да поставиш проверка за lastSubmit == null, (защото формата може да се изпраща и с Enter).

Отговор
в отговор на x1y1 #9

Я мистър интернет полиция

пак ли си тука бе ?

Отговор
в отговор на x1y1 #10

Re: забележка

Абе не успях да докарам случай в който да не се минава през onfocus.
Пробвах и с Tab + Enter и accesskey на IE, Firefox и Opera (последните версии де).

Отговор
в отговор на Paдo #11

Re: забележка

:) е IE се 'отчете' ако събмитваш през accesskey се показва 'submited via null'

Отговор
в отговор на Paдo #12

Re: забележка

При мен (Opera, IE) не се минава през onfocus. Ако използваш onclick вместо onfocus, в Opera се минава през него и с Enter, но не и в IE. Аз говоря не да фокусираш бутона и да натиснеш Enter. Щракни в IE където и да е в този fieldset и натисни Enter, за Opera ще трябва един input text за да го тестваш.

Отговор
в отговор на x1y1 #13

Re: забележка

Мда, като съм във fieldset-а не минава през onfocus и директно изпраща с Enter. Забелязах, че първия (независимо от tabindex-а) от бутоните е с удебелен бордер, но не се фокусира. В случая бих подходил инженерно - в onsubmit на формата проверявам lastSubmit и ако е null връщам false, т.е. не събмитвам. Така и така има достатъчно културни варианти за юзъра - кеф му да клика, кеф му да се разхожда с Tab и тогава да натиска Enter.

Отговор
в отговор на asdasdas #14

Re: JavaScript и натиснат бутон

Има.

[линк]
Ей тук всичко са си написали хората. И не ти требе JS

И.Ш.
Отговор
в отговор на wiz. #15

Re: JavaScript и натиснат бутон

Не знам защо му е на автора на темата, но съм правил нещо подобно - имам форма, която прави различни неща, когато се събмитне през различен бутон.
За server-side е ясно - name. Работата е там, че може да искам да направя нещо с client-side скрипт. Друго решение е да имам отделни форми, всяка с по един събмит, но не работи, когато има общи за двете форми контроли.

Отговор
в отговор на Paдo #16

Re: JavaScript и натиснат бутон

С 2 думи, за server-side се ползва аТрибуТа name
А за clienT-side се ползва onclick

Що Трябва да е сложно, каТо може и да е просТо?

Fatal error: user in love
Отговор
в отговор на Chernobyl® #17

Re: JavaScript и натиснат бутон

Хм, бе по принцип е точно така. Сега като пробвах с онклик винаги бачка както трябва. Не знам защо съм останал с погрешното впечатление, че не работи с таб и аксеский.
Ше си го запиша правилото :))

Отговор
в отговор на Paдo #18

при Enter в input text в IE няма onclick

onclick вместо onfocus, но останалото си остава при Enter в input text в IE.


Отговор
в отговор на x1y1 #19

Re: при Enter в input text в IE няма onclick

Е т'ва ясно, за бутоните ставаше дума.

Отговор
в отговор на x1y1 #20

Re: при Enter в input text в IE няма onclick

Е нали целТа е да се разбере кой оТ дваТа буТона е наТиснаТ... при enTer в inpuT TexT не е наТиснаТ ниТо един, ама 'ич! :-P

А ако фокусираш буТона и наТиснеш enTer, си се задейсТва onclick...

Fatal error: user in love

Редактирано от Chernobyl® на

Отговор