Dlaczego elementy formularza nie powinny być nazywane?
Odkryłem poprzez debugowanie, że nie powinienem nazywać żadnych elementów formularzaname="submit"
, ale nawet po przeszukaniu nie znalazłem żadnego dobrego wyjaśnienia dlaczego?
Zobacz prosty przykład kodu poniżej:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form action="javascript:alert('submitted');" method="post" id="test-form">
<label>Name</label>
<input type="text" name="name-field" value="" />
<input type="submit" name="submit" value="Submit Button" /> <!-- name should not be "submit" -->
<p><a href="javascript: document.getElementById('test-form').submit();">Submit Link</a></p>
</form>
</body>
</html>
Jeśli tynaciśnij enter na dowolnym elemencie formularza lubKliknij Prześlij przycisk, to będzie działać.Jeśli tyKliknij naPrześlij link, będzie miał błąd
Nieobsługiwany błąd: „document.getElementById („ formularz testowy ”). Submit” nie jest funkcją
Jeśli po prostuPrzemianować TwójPrześlij przycisk do wszystkiego innego niżname="submit"
(nawet jeśli po prostu wykorzystasz część) lub po prostuusunąć name="submit"
atrybut, a następnie obaPrześlij przycisk iPrześlij link będzie działać.
Próbowałem tego w najnowszej wersji Internet Explorer, Firefox, Opera, Chrome i Safari. Wszyscy mają konsekwentne zachowanie w tym zakresie.
Jak widać w moim przykładzie kodu, nie ma udziału jQuery ani żadnej innej biblioteki JavaScript.
Byłbym wdzięczny za wyjaśnienie. Dzięki