PDA

View Full Version : سوال: عدم نمایش حروف در input با type=text



Mahboubeh.M
پنج شنبه 12 آذر 1394, 12:48 عصر
سلام دوستان. وقت بخیر

من می خواستم در فرمی که طراحی کردم در قسمت ورود تلفن همراه، درصورتی که کاربر هر یک از حروف روی کیبورد رو کلیک کرد در input نمایش داده نشه. کسی از دوستان میتونه کمکم کنه؟؟؟

blue.web9
پنج شنبه 12 آذر 1394, 13:18 عصر
با رویداد onkeyup میتونیم بررسی کنیم اگه کاربر حروف وارد کرد اون کاراکتر حذف یا با کاراکتر دیگه جایگزین بشه.
مثال :


<input type="text" name="test" onkeyup="this.value = this.value.replace(/[^\d]/g,'');" />

در سرور هم یادتون باشه حتما عدد بودن این ورودی بررسی کنید .به عنوان مثال با تابع is_numeric بررسی کنید.

Mahboubeh.M
پنج شنبه 12 آذر 1394, 17:01 عصر
با رویداد onkeyup میتونیم بررسی کنیم اگه کاربر حروف وارد کرد اون کاراکتر حذف یا با کاراکتر دیگه جایگزین بشه.
مثال :


<input type="text" name="test" onkeyup="this.value = this.value.replace(/[^\d]/g,'');" />

در سرور هم یادتون باشه حتما عدد بودن این ورودی بررسی کنید .به عنوان مثال با تابع is_numeric بررسی کنید.


خیلی خیلی ممنون از پاسختون.
عذر میخوام چرا در قسمت سرور هم باید بررسی با استفاده از تابع is_numeric انجام بشه؟؟ مگر کد جاوااسکریپت به تنهایی درست عمل نمیکنه؟؟

Unique
پنج شنبه 12 آذر 1394, 18:42 عصر
انجمن را اشتباه گرفتین اما با jquery میشه تابع بهتری نوشت و به جای replace کردن کلا مانع از اعمال کلید شد :


$(document).ready(function(){
$("input[numeric='yes']").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter, dot
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190, 110]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});


عذر میخوام چرا در قسمت سرور هم باید بررسی با استفاده از تابع is_numeric انجام بشه؟؟ مگر کد جاوااسکریپت به تنهایی درست عمل نمیکنه؟؟
ممکنه جاوا اسکریپت را غیر فعال کنه یا کپی کنه یا .... کلا بررسی باید سمت سرور انجام بشه. سمت کلاینت فقط برای جلوگیری از هدر رفتن وقت کاربر و زیبایی کار انجام میشه.

Mahboubeh.M
جمعه 13 آذر 1394, 11:17 صبح
انجمن را اشتباه گرفتین اما با jquery میشه تابع بهتری نوشت و به جای replace کردن کلا مانع از اعمال کلید شد :


$(document).ready(function(){
$("input[numeric='yes']").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter, dot
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190, 110]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});


ممکنه جاوا اسکریپت را غیر فعال کنه یا کپی کنه یا .... کلا بررسی باید سمت سرور انجام بشه. سمت کلاینت فقط برای جلوگیری از هدر رفتن وقت کاربر و زیبایی کار انجام میشه.

حیلی خیلی ممنون.
عذر میخوام میشه بگین $("input[numeric='yes']") چه کاری انجام میده؟؟

Unique
جمعه 13 آذر 1394, 13:44 عصر
عذر میخوام میشه بگین $("input[numeric='yes']") چه کاری انجام میده؟؟

میگه رویداد onkeydown را برای هر تگ input که attribute ی به صورت numeric=yes داشت اجرا کن ثل این :

<input type='text' numeric='yes' />

اینطور لازم نیست برای هر Input توی صفحه جدا جدا کد بزنیم. باید همیشه از قدرت slector ها استفاده کرد.

zmousavi
چهارشنبه 23 تیر 1395, 12:35 عصر
میگه رویداد onkeydown را برای هر تگ input که attribute ی به صورت numeric=yes داشت اجرا کن ثل این :

<input type='text' numeric='yes' />

اینطور لازم نیست برای هر Input توی صفحه جدا جدا کد بزنیم. باید همیشه از قدرت slector ها استفاده کرد.


عالی بود بسیار ممنون