(0,1,2,3,4,5 ... 9) 0-9 වැනි සංඛ්යාත්මක අක්ෂර වලට පමණක් ඉඩ දීමට අවශ්ය ආදාන පෙළ ක්ෂේත්රයක් ඇති වෙබ් පිටුවක් මම නිර්මාණය කරමි.
JQuery භාවිතා කර මා මෙය කරන්නේ කෙසේද?
(0,1,2,3,4,5 ... 9) 0-9 වැනි සංඛ්යාත්මක අක්ෂර වලට පමණක් ඉඩ දීමට අවශ්ය ආදාන පෙළ ක්ෂේත්රයක් ඇති වෙබ් පිටුවක් මම නිර්මාණය කරමි.
JQuery භාවිතා කර මා මෙය කරන්නේ කෙසේද?
Answers:
සටහන: මෙය යාවත්කාලීන කළ පිළිතුරකි. පහත දැක්වෙන අදහස් යතුරු කේත සමඟ අවුල් වූ පැරණි අනුවාදයක් වෙත යොමු වේ.
JSFiddle හි එය ඔබම උත්සාහ කරන්න .
මේ සඳහා ස්වදේශීය jQuery ක්රියාත්මක කිරීමක් නොමැත, නමුත් ඔබට <input>
පහත දැක්වෙන inputFilter
ප්ලගිනය සමඟ පෙළක ආදාන අගයන් පෙරහන් කළ හැකිය (පිටපත් + පේස්ට්, ඩ්රැග් + ඩ්රොප්, යතුරුපුවරු කෙටිමං, සන්දර්භය මෙනු මෙහෙයුම්, ටයිප් කළ නොහැකි යතුරු, භාරකාර ස්ථානය, වෙනස් යතුරුපුවරු පිරිසැලසුම් සහ IE 9 සිට සියලුම බ්රව්සර් ):
// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
$.fn.inputFilter = function(inputFilter) {
return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
} else {
this.value = "";
}
});
};
}(jQuery));
inputFilter
ආදාන පෙරණයක් ස්ථාපනය කිරීමට ඔබට දැන් ප්ලගිනය භාවිතා කළ හැකිය :
$(document).ready(function() {
$("#myTextBox").inputFilter(function(value) {
return /^\d*$/.test(value); // Allow digits only, using a RegExp
});
});
වැඩි ආදාන පෙරහන් උදාහරණ සඳහා JSFiddle නිරූපණය බලන්න . ඔබ තවමත් සේවාදායක පාර්ශව වලංගු කිරීම කළ යුතු බව සලකන්න !
jQuery ඇත්ත වශයෙන්ම මේ සඳහා අවශ්ය නොවේ, ඔබට පිරිසිදු ජාවාස්ක්රිප්ට් සමඟද එය කළ හැකිය. මෙම පිළිතුර බලන්න .
HTML 5 සමඟ ස්වදේශීය විසඳුමක් ඇත <input type="number">
( පිරිවිතර බලන්න ), නමුත් බ්රව්සර් සහාය වෙනස් වන බව සලකන්න:
step
, min
සහ max
ගුණාංග සඳහා සහය නොදක්වයි .e
සහ E
ක්ෂේත්රයට ඇතුළු වීමට ඉඩ දෙයි . මෙම ප්රශ්නය ද බලන්න .එය ඔබම උත්සාහ w3schools.com මත .
මෙන්න මම භාවිතා කරන ශ්රිතය:
// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// allow backspace, tab, delete, enter, arrows, numbers and keypad numbers ONLY
// home, end, period, and numpad decimal
return (
key == 8 ||
key == 9 ||
key == 13 ||
key == 46 ||
key == 110 ||
key == 190 ||
(key >= 35 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
});
});
};
එසේ කිරීමෙන් ඔබට එය ඔබගේ පාලනයට අනුයුක්ත කළ හැකිය:
$("#yourTextBoxName").ForceNumericOnly();
return this.each(function()
?
each
සිට return this.each(function()
HaggleLad කී පරිදි බහු වස්තු ඉඩ වන අතර, return
කොටසක් වැනි chaining ඉඩ, අමතන්නා කිරීමට jQuery වස්තුව නැවත නැවත පැමිණීමට නියමිත ය$("input[type='text'").ForceNumericOnly().show()
පෙළට:
<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">
බාධා රහිත විලාසය (jQuery සමඟ):
$('input[name="number"]').keyup(function(e)
{
if (/\D/g.test(this.value))
{
// Filter non-digits from input value.
this.value = this.value.replace(/\D/g, '');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number">
onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"
.
/[^0-9]|^0+(?!$)/g
ප්රමුඛ ශුන්ය ශ්රේණියක් වැළැක්වීම සඳහා ඔබට වෙනස් කළ හැකිය .
තනිකරම සංඛ්යාත්මක අක්ෂර පරීක්ෂා කිරීම සඳහා ඔබට සරල ජාවාස්ක්රිප්ට් නිත්ය ප්රකාශනයක් භාවිතා කළ හැකිය:
/^[0-9]+$/.test(input);
ආදානය සංඛ්යාත්මක හෝ අසත්ය නොවේ නම් මෙය සත්ය වේ.
හෝ සිදුවීම් යතුරු කේතය සඳහා, පහත සරල භාවිතය:
// Allow: backspace, delete, tab, escape, enter, ctrl+A and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
var charValue = String.fromCharCode(e.keyCode)
, valid = /^[0-9]+$/.test(charValue);
if (!valid) {
e.preventDefault();
}
ඔබට මේ වගේ ආදාන සිදුවීම් භාවිතා කළ හැකිය:
$(document).on("input", ".numeric", function() {
this.value = this.value.replace(/\D/g,'');
});
නමුත්, මෙම කේත වරප්රසාදය කුමක්ද?
decimal
අතර 0.0
කිරීමට 24.0
මම එය ඇතුලත් කරමු නොහැකි වෙමි.
this.value = Number(this.value.replace(/\D/g, ''));
කෙටි හා පැණිරස - පිළිතුරු 30+ කට පසු මෙය කිසි විටෙකත් වැඩි අවධානයක් නොලැබුණත්;)
$('#number_only').bind('keyup paste', function(){
this.value = this.value.replace(/[^0-9]/g, '');
});
JavaScript ශ්රිතය භාවිතා කරන්න isNaN ,
if (isNaN($('#inputid').val()))
if (isNaN (document.getElementById ('inputid'). val ()))
if (isNaN(document.getElementById('inputid').value))
යාවත්කාලීන කිරීම: මෙන්න ලස්සන ලිපියක් ඒ ගැන කතා කරන නමුත් jQuery භාවිතා කිරීම: HTML පෙළ කොටු වල ආදානය සංඛ්යාත්මක අගයන්ට සීමා කිරීම
document.getElementById('inputid').val()
මචන් .. ඒක තාමත් විහිළුවක්. .val()
විහිළුවක්. use.value
decimal
අතර 0.0
කිරීමට 24.0
මම එය ඇතුලත් කරමු නොහැකි වෙමි.
$(document).ready(function() {
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
});
මුලාශ්රය: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
මම මෙය අපගේ අභ්යන්තර පොදු js ගොනුවේ භාවිතා කරමි. මෙම හැසිරීම අවශ්ය ඕනෑම ආදානයකට මම පන්තිය එක් කරමි.
$(".numericOnly").keypress(function (e) {
if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});
මට වඩා සරල එකක්
jQuery('.plan_eff').keyup(function () {
this.value = this.value.replace(/[^1-9\.]/g,'');
});
this.value.replace(/[^0-9\.]/g,'');
OP හි අවශ්යතා 0-9 ඇතුළත් කිරීමට ඔබ භාවිතා කරන බවට සහතික විය යුතුය
ඇයි මෙතරම් සංකීර්ණ? HTML5 රටා ලක්ෂණයක් ඇති බැවින් ඔබට jQuery පවා අවශ්ය නොවේ:
<input type="text" pattern="[0-9]*">
සිසිල්ම දෙය නම් එය ජංගම උපාංගවල සංඛ්යාත්මක යතුරු පුවරුවක් ගෙන ඒමයි, එය jQuery භාවිතා කිරීමට වඩා හොඳය.
මෙම ඉතා සරල විසඳුම භාවිතා කිරීමෙන් ඔබට එය කළ හැකිය
$("input.numbers").keypress(function(event) {
return /\d/.test(String.fromCharCode(event.keyCode));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" name="field_name" />
විසඳුම සඳහා මම මෙම සබැඳිය වෙත යොමු කළෙමි . එය පරිපූර්ණව ක්රියා කරයි !!!
decimal
අතර 0.0
කිරීමට 24.0
මම එය ඇතුලත් කරමු නොහැකි වෙමි.
HTML5 හි රටා ගුණාංගය මඟින් මූලද්රව්යයේ අගය පරීක්ෂා කරන නිත්ය ප්රකාශනයක් නියම කරයි.
<input type="text" pattern="[0-9]{1,3}" value="" />
සටහන: රටා ගුණාංගය පහත දැක්වෙන ආදාන වර්ග සමඟ ක්රියා කරයි: පෙළ, සෙවීම, url, දුරකථන, විද්යුත් තැපෑල සහ මුරපදය.
[0-9] ඕනෑම නිත්ය ප්රකාශන තත්වයකින් ප්රතිස්ථාපනය කළ හැකිය.
{1,3} එය අවම වශයෙන් 1 නියෝජනය කරන අතර උපරිම ඉලක්කම් 3 ක් ඇතුළත් කළ හැකිය.
decimal
අතර 0.0
කිරීමට 24.0
මම එය ඇතුලත් කරමු නොහැකි වෙමි.
JQuery.validate භාවිතා කරමින් තරමක් සරල දෙයක්
$(document).ready(function() {
$("#formID").validate({
rules: {
field_name: {
numericOnly:true
}
}
});
});
$.validator.addMethod('numericOnly', function (value) {
return /^[0-9]+$/.test(value);
}, 'Please only enter numeric values (0-9)');
ශ්රිතය suppressNonNumericInput (සිද්ධිය) {
if( !(event.keyCode == 8 // backspace
|| event.keyCode == 46 // delete
|| (event.keyCode >= 35 && event.keyCode <= 40) // arrow keys/home/end
|| (event.keyCode >= 48 && event.keyCode <= 57) // numbers on keyboard
|| (event.keyCode >= 96 && event.keyCode <= 105)) // number on keypad
) {
event.preventDefault(); // Prevent character input
}
}
decimal
අතර 0.0
කිරීමට 24.0
මම එය ඇතුලත් කරමු නොහැකි වෙමි.
මම ඉතා හොඳ හා සරල විසඳුමකට පැමිණ ඇති අතර එමඟින් පරිශීලකයාට පෙළ තෝරා ගැනීම හෝ පිටපත් කිරීම වෙනත් විසඳුම් මෙන් වළක්වනු නොලැබේ. jQuery ශෛලිය :)
$("input.inputPhone").keyup(function() {
var jThis=$(this);
var notNumber=new RegExp("[^0-9]","g");
var val=jThis.val();
//Math before replacing to prevent losing keyboard selection
if(val.match(notNumber))
{ jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server
ඔබට මෙම ජාවාස්ක්රිප්ට් ශ්රිතය භාවිතා කළ හැකිය:
function maskInput(e) {
//check if we have "e" or "window.event" and use them as "event"
//Firefox doesn't have window.event
var event = e || window.event
var key_code = event.keyCode;
var oElement = e ? e.target : window.event.srcElement;
if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
if ((key_code > 47 && key_code < 58) ||
(key_code > 95 && key_code < 106)) {
if (key_code > 95)
key_code -= (95-47);
oElement.value = oElement.value;
} else if(key_code == 8) {
oElement.value = oElement.value;
} else if(key_code != 9) {
event.returnValue = false;
}
}
}
ඔබට එය ඔබගේ පෙළ කොටුවට මේ ආකාරයට බැඳ තැබිය හැකිය:
$(document).ready(function() {
$('#myTextbox').keydown(maskInput);
});
මම ඉහත නිෂ්පාදනයේදී භාවිතා කරන අතර එය පරිපූර්ණව ක්රියාත්මක වන අතර එය හරස් බ්රව්සරයකි. තවද, එය jQuery මත රඳා නොපවතින බැවින් ඔබට එය පෙළ පෙළ කොටුවට පේළිගත ජාවාස්ක්රිප්ට් සමඟ බැඳිය හැකිය:
<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>
මම හිතන්නේ එය සෑම කෙනෙකුටම ප්රයෝජනවත් වේවි
$('input.valid-number').bind('keypress', function(e) {
return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
})
if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
මෙන්න මම කලකට පෙර නිර්මාණය කළ ඉක්මන් විසඳුමක්. ඔබට මගේ ලිපියෙන් ඒ ගැන වැඩිදුර කියවිය හැකිය:
http://ajax911.com/numbers-numeric-field-jquery/
$("#textfield").bind("keyup paste", function(){
setTimeout(jQuery.proxy(function() {
this.val(this.val().replace(/[^0-9]/g, ''));
}, $(this)), 0);
});
මම ඉහත @ user261922 හි පෝස්ට් එක මත පදනම්ව ලියා, තරමක් වෙනස් කර ඇති බැවින් ඔබට සියල්ල තෝරා ගත හැකිය, ටැබ් සහ එකම පිටුවක "අංක පමණක්" යන ක්ෂේත්ර කිහිපයක් හැසිරවිය හැකිය.
var prevKey = -1, prevControl = '';
$(document).ready(function () {
$(".OnlyNumbers").keydown(function (event) {
if (!(event.keyCode == 8 // backspace
|| event.keyCode == 9 // tab
|| event.keyCode == 17 // ctrl
|| event.keyCode == 46 // delete
|| (event.keyCode >= 35 && event.keyCode <= 40) // arrow keys/home/end
|| (event.keyCode >= 48 && event.keyCode <= 57) // numbers on keyboard
|| (event.keyCode >= 96 && event.keyCode <= 105) // number on keypad
|| (event.keyCode == 65 && prevKey == 17 && prevControl == event.currentTarget.id)) // ctrl + a, on same control
) {
event.preventDefault(); // Prevent character input
}
else {
prevKey = event.keyCode;
prevControl = event.currentTarget.id;
}
});
});
ටැබයට ඉඩ දීමට ඔබට අවශ්යය:
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
මෙන්න jQuery UI Widget කර්මාන්ත ශාලාව භාවිතා කරන පිළිතුරකි. ඔබට පහසුවෙන් අවසර දී ඇති අක්ෂර අභිරුචිකරණය කළ හැකිය.
$('input').numberOnly({
valid: "0123456789+-.$,"
});
එමඟින් අංක, සංඛ්යා සං signs ා සහ ඩොලර් ප්රමාණයන් සඳහා ඉඩ ලබා දේ.
$.widget('themex.numberOnly', {
options: {
valid : "0123456789",
allow : [46,8,9,27,13,35,39],
ctrl : [65],
alt : [],
extra : []
},
_create: function() {
var self = this;
self.element.keypress(function(event){
if(self._codeInArray(event,self.options.allow) || self._codeInArray(event,self.options.extra))
{
return;
}
if(event.ctrlKey && self._codeInArray(event,self.options.ctrl))
{
return;
}
if(event.altKey && self._codeInArray(event,self.options.alt))
{
return;
}
if(!event.shiftKey && !event.altKey && !event.ctrlKey)
{
if(self.options.valid.indexOf(String.fromCharCode(event.keyCode)) != -1)
{
return;
}
}
event.preventDefault();
});
},
_codeInArray : function(event,codes) {
for(code in codes)
{
if(event.keyCode == codes[code])
{
return true;
}
}
return false;
}
});
මෙය නොබිඳිය හැකි බව පෙනේ.
// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
this.value = this.value.replace(/[^0-9\.]+/g, '');
if (this.value < 1) this.value = 0;
});
// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});
ඔබට සංඛ්යා යතුරු පෑඩය සහ ටැබ් යතුරද ක්රියාත්මක වන බවට වග බලා ගත යුතුය
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
}
else {
event.preventDefault();
}
}
මට ටිකක් උදව් කිරීමට අවශ්ය වූ අතර, මම මගේ අනුවාදය, onlyNumbers
ක්රියාකාරිත්වය ...
function onlyNumbers(e){
var keynum;
var keychar;
if(window.event){ //IE
keynum = e.keyCode;
}
if(e.which){ //Netscape/Firefox/Opera
keynum = e.which;
}
if((keynum == 8 || keynum == 9 || keynum == 46 || (keynum >= 35 && keynum <= 40) ||
(event.keyCode >= 96 && event.keyCode <= 105)))return true;
if(keynum == 110 || keynum == 190){
var checkdot=document.getElementById('price').value;
var i=0;
for(i=0;i<checkdot.length;i++){
if(checkdot[i]=='.')return false;
}
if(checkdot.length==0)document.getElementById('price').value='0';
return true;
}
keychar = String.fromCharCode(keynum);
return !isNaN(keychar);
}
ආදාන ටැගයට එක් කරන්න "... ආදානය ... id =" මිල "onkeydown =" ආපසු පමණක් අංක (සිද්ධිය) "..." සහ ඔබ ඉවරයි;)
මමත් පිළිතුරු දීමට කැමතියි :)
$('.justNum').keydown(function(event){
var kc, num, rt = false;
kc = event.keyCode;
if(kc == 8 || ((kc > 47 && kc < 58) || (kc > 95 && kc < 106))) rt = true;
return rt;
})
.bind('blur', function(){
num = parseInt($(this).val());
num = isNaN(num) ? '' : num;
if(num && num < 0) num = num*-1;
$(this).val(num);
});
ඒක තමයි ... ඉලක්කම් විතරයි. :) පාහේ එය 'බොඳවීම' සමඟ ක්රියා කළ හැකිය, නමුත් ...
ඇතුළත් කිරීමේ අගය සංඛ්යාත්මකදැයි පරීක්ෂා කිරීමට සරල ක්රමය:
var checknumber = $('#textbox_id').val();
if(jQuery.isNumeric(checknumber) == false){
alert('Please enter numeric value');
$('#special_price').focus();
return;
}
ඔබට HTML5 අංක ආදානය උත්සාහ කළ හැකිය:
<input type="number" placeholder="enter the number" min="0" max="9">
මෙම ආදාන ටැග් මූලද්රව්යය දැන් අගය ගන්නේ 0 සිට 9 දක්වා පමණි. අවම ගුණාංගය 0 ලෙසත් උපරිම ගුණාංගය 9 ලෙසත් සකසා ඇත.
වැඩි විස්තර සඳහා http://www.w3schools.com/html/html_form_input_types.asp වෙත පිවිසෙන්න