Allolev skript võimaldab teil kontrollida, kas väli on õigesti sisestatud. See piirab teatud märkide sisestamist tekstisisestusväljale.
Märkide kontrollimist tekstisisestusväljal saab teha nii sisestuse enda kui ka teatud sündmuse ajal. Skripti saab kasutada registreerimisväljadel, sisselogimisvormidel jne. Saate keelata konkreetsed märgid või tegelaste rühma. Näiteks saate täielikult keelata numbrite sisestamise, keelata tühikud, tabeldusmärgid ja keelata kirillitsa või ladina tähestiku.
200?"200px":""+(this.scrollHeight+5)+"px");">
["0-9",":"] – märgid, mille sisestamine sellele väljale on keelatud. Lisatud jutumärkidesse, eraldatud komadega.
Tegelaste rühmad
"0-9" või "\d" - arvväärtused
"a-ya" - kirillitsa tähestiku väikesed tähed
"A-Z" - kirillitsa tähestiku suured tähed
"A-ya" - kõik kirillitsa tähed
"a-z" - väikesed ladina tähed (esimene täht on ladina)
"A-Z" - ladina tähestiku suurtähed (ladina tähestiku esimene täht)
"A-z" - kõik ladina tähed (esimene täht on ladina)
"A-ya" - kõik tähed (esimene täht on ladina)
"\w" - kõik tähed, numbrid ja sümbol "_"
"\s" - tühik, tabeldusmärk ja lõik
Tähelepanu! Selle materjali kopeerimine ilma veebisaidile viitamata on keelatud | |
Allikas/ Borat | |
Üks levinumaid ülesandeid. Kas soovite kaitsta vormi jutumärkide ja kaldkriipsude tippimise eest või soovite kohest transliteratsiooni. Kuidas siis muidu saab vormi sisu kliendi poolel soovitud järjekorda panna?
Kuidas keelata teatud märkide sisestamine või asendamine väljale või tekstialale JS? Loogika on lihtne - loome esimese massiivi tähemärkidega, mida tahame asendada, ja seejärel teise - nendega, mille sisestame esimeste asemel. Kokku: kaks massiivi sama(!) elementide arvuga.
var transChars = new Array(""",""");
{
var from = nimivorm;
Var kuni = "";
var len = alates.pikkus;
var märk, isRus;
jaoks (var i = 0; i< len; i++)
{
isRus = vale;
jaoks (var j = 0; j< rusChars.length; j++)
{
{
isRus = tõsi;
murda;
}
}
}
}
Saate massiive täita oma asendussümbolitega. Kõik, mida vajate! Allpool on näited.
Kui tahame asendada näiteks kirillitsa tähestiku ladina tähtedega või lihtsamalt öeldes kohe translitereerida) Vaadake allpool:
Var rusChars = new Array("A","a","B","b","C","c","D","g","D","d","E", "e", "Ё", "e", "Zh", "zh", "Z", "z",
"Sh", "sh", "Shch", "shch", "E", "e", "Yu", "yu", "Ya", "ya", "Y", "y", "b " ","b");
"sh","sh","csh","csh","e","e","u","u","ya","ya","i","i","" """);
Kui tahame väljal teatud märgid asendada - ühe- ja topeltjutumärgid ülakomaga, mis andmebaasi salvestatuna ei võimalda meil saada valeandmeid).
Var rusChars = new Array(""","\"");
var transChars = new Array(""",""");
Onblur="convert("vormi nimi", "kust me seda muudame", "kuhu asendame sisestame");"
Noh, allpool on näide failidega töötamise ja demo vaatamise kohta!
Asendage teatud märgid sisestusväljal JS-i abil
var rusChars = new Array("A","a","B","b","C","c","D","g","D","d","E", "e", "Ё", "e", "Zh", "zh", "Z", "z",
"I", "i", "Y", "y", "K", "k", "L", "l", "M", "m", "N", "n", "O" " ","o", "P", "p",
"R", "r", "S", "s", "T", "t", "U", "u", "F", "f", "X", "x", "H" " ","ch", "Ts", "ts",
"Sh", "sh", "Shch", "shch", "E", "e", "Yu", "yu", "Ya", "ya", "Y", "y", "b " ""b",""","\"");
var transChars = new Array("a", "a", "b", "b", "v", "v", "g", "g", "d", "d", "e", "e", "jo", "jo", "zh", "zh", "z", "z",
"i","i","y","y","k","k","l","l","m","m","n","n","o" ","o","p","p",
"r", "r", "s", "s", "t", "t", "u", "u", "f", "f", "h", "h", "ch" ""ch","ts","ts",
"sh","sh","csh","csh","e","e","u","u","ya","ya","i","i","" ","","","");
Funktsioon convert(the_vorm, conv_froms, conv_to)
{
var nameForm = document.forms.value;
var from = nimivorm;
Var kuni = "";
var len = alates.pikkus;
var märk, isRus;
jaoks (var i = 0; i< len; i++)
{
märk = from.substr(i,1);
isRus = vale;
jaoks (var j = 0; j< rusChars.length; j++)
{
if (märk == rusChars[j])
{
isRus = tõsi;
murda;
}
}
+= (isRus) ? transChars[j] : märk;
}
document.forms.value = kuni;
}
Kohe ühes valdkonnas
Ühelt teisele
Skriptide olemus, mida me edaspidi kaalume, on külastaja tegevuse käigu pealt tabada ja keelata tal teatud väljale midagi sisestada, välja arvatud numbrid. See tähendab, et kui kursor on fokuseeritud väljale, kui proovite klaviatuuril tähti vajutada, ei juhtu väljal midagi, samal ajal saate sisestada numbreid ja mõningaid sümboleid, näiteks + - () jne. , mida võib vaja minna telefoninumbri või muu digitaalse numbri väljade jaoks.
Selle skripti toimimiseks vajate esmalt numbri sisestamise välja. Näiteks vormi sees on väli, mis näeb välja umbes selline:
Esimene skript kasutab jQueryt, seega peate lisama ühenduse jQuery teegiga oma saidi päises enne sulgevat päist või jaluses enne sulgevat keha. Kui tegite seda või sisuhaldussüsteem (saidi mootor) teeb seda, ei pea te seda tegema. Saate vaadata saidi lähtekoodi ja kui kuskil on sarnane rida, siis tuleb see samm vahele jätta. Kui ühendust pole, peate lisama järgmise rea:
Nüüd on kord skripti enda käes. Lisame selle eraldi faili ja lisame selle teegi järele või lisame siltidesse:
/// KOODI SIIA...
Noh, tegelik kood ise:
JQuery(document).ready(function($)( $.fn.forceNumbericOnly = function() ( return this.each(function() ( $(this).keydown(function(e)) ( var key = e.charCode | | e.keyCode || 0; return (võti == 8 || klahv == 9 || klahv == 46 ||(klahv >= 37 && klahv = 48 && klahv = 96 && klahv 57)) tagastab vale; ) ;
Isiklikult kasutan esimest koodi, see on minu jaoks mugavam. Millise neist valida, on ka teie otsustada.
See on kõik, tänan tähelepanu eest. 🙂
Eespool lubatud javascripti virtuaalsete võtmekoodide tabel.
Võti |
10. kood |
Võti |
10. kood |
Tagasilükkeklahv | 8 | ||
Tab | 9 | Sisenema | 13 |
Shift | 16 | Ctrl | 17 |
Alt | 18 | Paus | 19 |
CapsLock | 20 | Esc | 27 |
ruumi | 32 | PageUp | 33 |
PageDown | 34 | Lõpp | 35 |
Kodu | 36 | vasak nool | 37 |
nool üles | 38 | parem nool | 39 |
nool alla | 40 | Sisestage | 45 |
Kustuta | 46 | 0 | 48 |
1 | 49 | 2 | 50 |
3 | 51 | 4 | 52 |
5 | 53 | 6 | 54 |
7 | 55 | 8 | 56 |
9 | 57 | A | 65 |
B | 66 | C | 67 |
68 | E | 69 | |
F | 70 | G | 71 |
H | 72 | I | 73 |
J | 74 | K | 75 |
L | 76 | M | 77 |
N | 78 | O | 79 |
P | 80 | K | 81 |
R | 82 | S | 83 |
T | 84 | U | 85 |
V | 86 | W | 87 |
X | 88 | Y | 89 |
Z | 90 | vasak Windowsi klahv | 91 |
parem Windowsi klahv | 92 | Rakenduste võti | 93 |
Numbriklahvistik 0 | 96 | Numbriklahvistik 1 | 97 |
Numbriklahvistik 2 | 98 | Numbriklahvistik 3 | 99 |
Numbriklahvistik 4 | 100 | Numbriklahvistik 5 | 101 |
Numbriklahvistik 6 | 102 | Numbriklahvistik 7 | 103 |
Numbriklahvistik 8 | 104 | Numbriklahvistik 9 | 105 |
NumPad * | 106 | Numbriklahvistik + | 107 |
NumPad – | 109 | NumPad. | 110 |
NumPad / | 111 | F1 | 112 |
F2 | 113 | F3 | 114 |
F4 | 115 | F5 | 116 |
F6 | 117 | F7 | 118 |
F8 | 119 | F9 | 120 |
F10 | 121 | F11 | 122 |
F12 | 123 | Numeratsioonilukk | 144 |
Kerimislukk | 145 | PrintScreen | 154 |
Meta | 157 | ; | 186 |
= | 187 | , | 188 |
- | 189 | . | 190 |
/ | 191 | ~ | 192 |
[ | 219 | \ | 220 |
] | 221 | " | 222 |
Sain üsna standardse ülesande: filtreerida kasutaja poolt sisendisse sisestatud märgid, st kasutaja saab sisestada reale numbrite ja tähtede komplekti, näiteks “5s68d.4r55e.6t5” ja serverisse I säästmiseks tuleb saata õige summa rublades - "568.455" (rubla).
Sain ülesandega üsna kiiresti valmis, lisades sisendile fokusseerimissündmuse, kuid minu lahendusel oli mitmeid olulisi puudusi: kus selles näites lõpeb summa rublades ja algab kopikad? Kui kasutaja sisestab mitu miinust (sellisel juhul on õiged ka negatiivsed väärtused), siis millist miinustest tuleks lugeda rea alguseks? Ja nii edasi.
Seetõttu ilmus skripti teine versioon klahvivajutuse regulaaravaldistega:
$(e.currentTarget).val(($(e.currentTarget).val()).replace(/[^0123456789.-]/, ""))
Kuid nagu selgus, oli sellel meetodil märgatav puudus (ma ei pea silmas seda, et kasutaja näeb tähemärki, mille ta sisestab, ja siis see märk kaob), nimelt kui asetate kursori näiteks tähe keskele. sisestatud number sisendisse, sisesta täht, siis skript lõikab tähe välja, kuid liigutab kursused rea lõppu.
Sel põhjusel käskis üks vanem sõber mul kirjutada klahvivajutuse jaoks funktsioon. 30 minuti pärast oli funktsiooni kolmas versioon valmis ja see nägi välja umbes selline:
Function() ( tagastab this.each(function() ( $(this).keydown(function(e) ( var key = e.charCode || e.keyCode || 0; // lubab tagasilükke, tabeldusklahvi, kustuta, sisesta , AINULT nooled, numbrid ja klahvistiku numbrid // kodu, lõpp, punkt ja numbriklahvistiku kümnendtagastus (klahv == 8 || klahv == 9 || klahv == 13 || klahv == 46 || klahv == 110 | | klahv == 190 || (klahv >= 35 && klahv = 48 && klahv = 96 && klahv