Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.javascript > #4851
| Path | csiph.com!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: Doppelte Eingabe |
| Supersedes | <2682631.CbtlEUcBR6@PointedEars.de> |
| Date | Thu, 02 Feb 2017 21:02:13 +0100 |
| Organization | PointedEars Software (PES) |
| Lines | 100 |
| Message-ID | <3978478.cEBGB3zze1@PointedEars.de> (permalink) |
| References | <o6uvk2$qva$1@news.albasani.net> <1t58931f77i3f82n3e8%sfroehli@Froehlich.Priv.at> <o6vg9b$e26$1@news.albasani.net> <1t58935c1bi1e45n3e8%sfroehli@Froehlich.Priv.at> <aa7ec64e-3970-59ca-f8e9-647206e26680@arcor.de> |
| Reply-To | Thomas 'PointedEars' Lahn <cljs@PointedEars.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | 8Bit |
| X-Trace | solani.org 1486065733 2355 eJwFwQkRwEAIBDBLx7MLyGEo+JfQBEbhhBN0HO66phj5cMmGCmbL8QFym7bWU618nToZ5j8X5hC4 (2 Feb 2017 20:02:13 GMT) |
| X-Complaints-To | abuse@news.solani.org |
| NNTP-Posting-Date | Thu, 2 Feb 2017 20:02:13 +0000 (UTC) |
| User-Agent | KNode/4.14.2 |
| Cancel-Key | sha1:ZToA5ujTUfknfWs2zVbRM17nKt8= |
| X-User-ID | eJwNyskBACAIA7CVRMvhOIJl/xH0l0d0mVg5TA3a2u1CNtD7ckTUrjMlMxqTkro8ve4O5cfhzZXqA/8YawjkAXp1FiM= |
| X-NNTP-Posting-Host | eJwNy8EBADEEBMCWOHbRToj+S8jNf2BUdjhBx2K9GQxB7XVV4J6ZzAOIlGkzJWX/8JlPXK0HBckQIw== |
| Face | iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg== |
| X-Face | %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v |
| Cancel-Lock | sha1:htgXLarjKax3SYbwZV98nI7bqBE= |
| Xref | csiph.com de.comp.lang.javascript:4851 |
Show key headers only | View raw
Christoph M. Becker wrote:
> On 02.02.2017 at 17:24, Stefan Froehlich wrote:
>> Im wesentlichen läuft es darauf hinaus:
>>
>> | <script language="JavaScript">
>
> Das language Attribut sollte eigentlich schon lange nicht mehr verwendet
> werden. Aber dazu kann ein anderer sicher mehr sagen. :)
Für gültiges HTML 4.01 (1999) fe lt das type-Attribut, und für gültiges HTML
4.01 Strict und HTML5+ (2014) gehört das language-Attribut weg. In HTML5
ist ausserdem type="text/javascript" optional; ich schreibe es aus
Kompatibilitätsgründen trotzdem hin:
<http://wayback.archive.org/web/20100904140711/http://pointedears.de/scripts/test/mime-types/>
[Keine Ahnung mehr, was “partially supported” (gelb) bedeutet; diesen
Testcase aktualisiert wieder online zu stellen, steht schon länger auf
meiner TODO-Liste. Soifz. [psf 10.1]]
>> | var isSubmitted;
>> |
>> | function singleFormSubmission() {
>> | if (isSubmitted) return false;
>> | isSubmitted = true;
>> | return true;
>> | }
>> | </script>
>> |
>> | <form [...] onsubmit="return singleFormSubmission();">
>
> Die Funktion ist nicht mal nötig. Es geht auch:
>
> <form […] onsubmit="return !!isSubmitted++">
>
> Schön ist keine der beiden Varianten, aber sie funktionieren[TM].
Nein, Deine Variante funktioniert nicht i.S.v. „tut was sie soll“, denn sie
ist nicht äquivalent :)
Funktionieren würde
<form […] onsubmit="return !isSubmitted++">
aber nur, wenn der initiale Wert von “isSubmitted” 0 oder ein entsprechend
dazu konvertierbarer Wert wäre.
Denn hier isSubmitted === undefined, und
1. Mit Post-Inkrement wird *erst* der Wert der Variablen/Eigenschaft
ausgewertet, dann wird er zu Number konvertiert und dann um 1 erhöht.
2. Mit Anfangswert “undefined”:
!!isSubmitted++ === !!undefined === !(!undefined) === !(!false) ===
!true === false
Number.isNaN(isSubmitted = (undefined + 1)); /* (!) */
Das Formular kann also so nie abgesendet werden, denn auch Number.isNaN(x++)
und Number.isNaN(++x), wenn Number.isNaN(x).
Wäre der Anfangswert isSubmitted === 0 (was Du wohl dachtest), dann machte
Dir das *Post*-Inkrement einen Strich durch die Rechnung, denn
!!isSubmitted++ === !!0 === !(!0) === !(!false) === !true === false
(isSubmitted = (isSubmitted + 1)) === (0 + 1) === 1
Das Formular würde also beim ersten Mal _nicht_ abgesendet werden, dann aber
immer, denn auch !!++Infinity === true¹.
Das kann man im gewünschten Sinn (Formular nur einmal, d.h. nur beim ersten
Mal, absenden) lösen, indem man nur *einmal* negiert:
!isSubmitted++ === !0 === !false === true
(isSubmitted = (isSubmitted + 1)) === 1;
und beim zweiten, dritten usw. Mal
(!isSubmitted++ === !x === !true === false) mit typof x == "number",
x >= 1.
Herauszufinden, ob es Initialisierungswerte für “isSubmitted” gibt, mit
denen doppelte Negation und/oder Prä-Inkrement funktionieren würde, bleibt
dem geneigten Leser zur Übung überlassen.
_______
¹ Normalerweise nur sinngemäss; hier zufällig äquivalent, da “Infinity”
eine Eigenschaft des globalen Objekts mit dem Wert
Number.POSITIVE_INFINITY ist. Das funktioniert aber nicht im Strict
Mode (TypeError), da die “Infinity”-Eigenschaft “read only” ist
([[Writable]]-Attribut ist “false”).
--
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
Re: Doppelte Eingabe "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-02-02 18:05 +0100
Re: Doppelte Eingabe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-02-02 17:07 +0000
Re: Doppelte Eingabe Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-02-02 21:02 +0100
Re: Doppelte Eingabe "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-02-03 00:52 +0100
Re: Doppelte Eingabe Ralph Stahl <post@rstahl.de> - 2017-02-03 10:27 +0100
Re: Doppelte Eingabe "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-02-03 11:38 +0100
csiph-web