Išjungti HTML5 formos elemento patvirtinimą

Mano formose norėčiau naudoti naujus HTML5 formų tipus, pavyzdžiui, <input type="url" /> ( daugiau informacijos apie tipus čia ).

Problema yra ta, kad „Chrome“ nori būti labai naudinga ir patikrinti šiuos elementus, išskyrus tai, kad ji ją sugeria. Jei jis neatlieka eilinio patikrinimo, nėra jokio kito pranešimo ar indikacijos, išskyrus tą, kuris gauna fokusą. Iš anksto užpildysiu URL elementus "http://" , todėl mano patikrinimas tik tikrina šias vertes kaip tuščias eilutes, tačiau „Chrome“ jį atmeta. Jei galėčiau keisti savo patikros taisykles, tai taip pat veiktų.

Žinau, kad galiu tiesiog grįžti prie type="text" , bet noriu, kad šie nauji sakinių tipai būtų patobulinti (pvz., Jis automatiškai persijungia į pasirinktinį klaviatūros išdėstymą mobiliuosiuose įrenginiuose):

2019

337
22 июня '10 в 7:53 2010-06-22 07:53 „nickf“ yra nustatytas birželio 22 d. 10 val. 7:53 2010-06-22 07:53
@ 9 atsakymai

Jei norite išjungti kliento pusės patvirtinimo formą HTML5 formoje, į formos elementą pridėkite novalidato atributą. Pavyzdys:

 <form method="post" action="/foo" novalidate>...</form> 

Žr. Http://www.w3.org/TR/html5/forms.html#attr-fs-novalidate

616
22 июня '10 в 17:36 2010-06-22 17:36 atsakymą davė Jakob S birželio 10 d., 17:36, 2010-06-22 17:36

Aš perskaičiau specifikaciją ir patikrinau kai kuriuos „Chrome“ testus, o jei sugautas „negaliojantis“ įvykis ir grįšite melą, kuris, atrodo, leidžia pateikti formą.

Naudodamas šį HTML naudoju jquery.

Nenaudojau to kitose naršyklėse.

27
22 июня '10 в 14:56 2010-06-22 14:56 Atsakymą davė Ben Boyle birželio 10 d., 14:56, 2010-06-22 14:56

Aš tik norėjau pridurti, kad naudojant novalidato atributą jūsų formoje naršyklė negalės išsiųsti formos. Naršyklė vis dar vertina duomenis ir priduria: galioja ir nepriimtinos pseudo klasės.

Radau tai, nes galiojančios ir negaliojančios pseudo klasės yra HTML5 stiliaus lapo dalis. Aš tiesiog ištrinau pseudo klasės įrašus CSS faile. Jei kas nors suranda kitą sprendimą, praneškite man.

16
29 марта '11 в 22:21 2011-03-29 22:21 atsakymą pateikė „ BFTrick “ kovo 29 d. 11 val. 22:21 2011-03-29 22:21

Užuot bandę užbaigti naršyklės patikrinimą, galite įterpti „ http:// kaip vietos žymeklio tekstą. Tai iš jūsų susieto puslapio:

Vietos teksto tekstas

Pirmasis žiniatinklio formų HTML5 patobulinimas yra gebėjimas įvesti vietos žymeklio tekstą įvesties lauke . Vietos žymeklio tekstas rodomas įvesties lauke, kol laukas yra tuščias ir išjungtas. Kai tik spustelėsite (arba skirtuką) įvesties lauke, vietos žymeklio tekstas išnyksta.

Jūs tikriausiai matėte vietos žymeklio tekstą. Pvz., Dabar „Mozilla Firefox 3.5“ vietovės juostoje yra vietos žymeklio tekstas, kuriame sakoma „Žymės paieška ir istorija“:

2019

12
22 июня '10 в 8:26 2010-06-22 08:26 Atsakymą pateikė John Kugelman , birželio 22 d. 10 val. 08:26 2010-06-22 08:26

Geriausias sprendimas yra naudoti teksto įvestį ir pridėti atributą inputmode = "url", kad pateiktumėte klaviatūros galimybes. Šiam tikslui buvo sukurta HTML5 specifikacija. Jei išsaugosite tipą = "url", gausite sintaksės patikrinimą, kuris nėra naudingas kiekvienu atveju (geriau patikrinti, ar vietoj sintaksės, kuri yra gana leistina ir daug nepadeda, grąžina 404 klaidą).

Jūs taip pat turite galimybę panaikinti numatytąjį šabloną, pvz., Atributas template = "https ?: //.+", kad būtų labiau leistinas.

Įtraukus novalidato atributą į formą, nėra teisingas atsakymas į klausimą, nes jis pašalina visų formų laukų tikrinimą ir, pavyzdžiui, galbūt norėsite tikrinti el. Pašto laukus.

Naudojant jQuery, kad išjungtumėte patvirtinimą, taip pat yra blogas sprendimas, nes jis turėtų veikti be „JavaScript“.

Mano atveju, prieš įvedant URL įkeliu pasirinkimo elementą su dviem parametrais (http: // arba https: //), nes man reikia tik svetainių (ir ne ftp: // ar kitų dalykų). Taigi vengiu įvesti šį keistą priešdėlį (Tim Berners-Lee didžiausias apgailestavimas ir galbūt pagrindinis URL sintaksės klaidų šaltinis) ir naudoju paprastą teksto įvestį su inputmode = "url" su vietos žymenimis (be HTTP). Naudodamas „jQuery“ ir „server-side“ scenarijus, tikrinu tikrą svetainės buvimą (Nr. 404) ir pašalinti HTTP prefiksą, jei jis įterptas (negaliu naudoti šablono, pavyzdžiui, modelio = "^ ((? Http).) * $", neleisti įdiegti priešdėlį, nes manau, kad tai geriau leisti naudoti

9
10 окт. atsakymą pateikė plancton spalio 10 d. 2014-10-10 11:34 '14 at 11:34 2014-10-10 11:34

Radau „Chrome“ sprendimą su CSS su sekančiu valdikliu, neperžiūrint integruotos patikros formos, kuri gali būti labai naudinga.

 form input::-webkit-validation-bubble-message, form select::-webkit-validation-bubble-message, form textarea::-webkit-validation-bubble-message { display:none; } 

Taip pat galite tinkinti savo pranešimą ...

Gavau sprendimą šiame puslapyje: http://trac.webkit.org/wiki/Styling%20Form%20Controls

7
30 авг. atsakymas pateikiamas Val Entin 30 rug . 2012-08-30 22:29 '12, 10:29 val. 2012-08-30 22:29

Galite įdiegti paprastą chromo plėtinį ir tiesiog išjungti tiesioginį patikrinimą https://chrome.google.com/webstore/detail/html5-form-validation-err/dcpagcgkpeflhhampddilklcnjdjlmlb/related

Pagal numatytuosius nustatymus viskas veiks pagal numatytuosius nustatymus, bet galite išjungti html5 tikrinimą vienu mygtuko paspaudimu įrankių juostoje.

0
18 янв. Atsakymą Andrew Zhilin pateikė sausio 18 d. 2017-01-18 21:41 '17, 21:41 pm 2017-01-18 21:41

Tiesiog naudokite novalidate savo formoje.

 <form name="myForm" role="form" novalidate class="form-horizontal" ng-hide="formMain"> 

Cheers !!!

0
27 марта '17 в 23:14 2017-03-27 23:14 atsakymą pateikė „ brainSquezer“ kovo 27 d. 17, 23:14 2017-03-27 23:14

Čia yra funkcija, kurią naudoju, kad chromui ir operai nebūtų rodomas netinkamas įvesties dialogo >

 window.submittingForm = false; $('input[novalidate]').bind('invalid', function(e) { if(!window.submittingForm){ window.submittingForm = true; $(e.target.form).submit(); setTimeout(function(){window.submittingForm = false;}, 100); } e.preventDefault(); return false; }); 
0
03 июля '14 в 21:04 2014-07-03 21:04 atsakymą pateikė Tony Brix liepos 3 d. 14 d. 21:04 2014-07-03 21:04

Kiti klausimai apie žymes arba Užduoti klausimą