سلام ، من میخوام زمانی که کاربر توی یه input مقداری وارد میکنه فقط انگلیسی باشه
ممنون اگه کد درست رو واسم بفرستید
@milad @hesammousavi @ali.bayat
<input type="text" id="" name="" title="" onkeypress="return /[a-z0-9]/i.test(event.key)">@milad
ممنون این کد کار کرد
ولی من چطوری اینو توی کد خودم درستش کنم ؟
let searchBox = document.getElementById('searchBox');
searchBox.addEventListener("keypress",(e)=>{
return /[a-z0-9]/i.test(e.key);
})کافیه همینی که نوشتم رو مستقیم داخل کدهای html خودت بزاری، نیازی نیست که بصورت جدا درون script باشه.
شاید پاسخ شما همینجا باشد
اگر هم که اصرار داری که جدا باشه، اینطوری بنویسش:
<script>
document.querySelector("#searchBox").onkeypress = function(event) { return /[a-z0-9]/i.test(event.key) };
</script>@milad این کد کار میکنه ولی اون یکی کار نمیکنه ؛ دلیلش چیه
document.querySelector("#searchBox").onkeypress = function(event) { return /[a-z0-9]/i.test(event.key) };
let searchBox = document.querySelector("#searchBox");
searchBox.addEventListener('keypress',(event)=>{
return /[a-z0-9]/i.test(event.key)
})این دوتا باهم متفاوتن.
توی onevent ها، زمانی که مقدار برگشتی false باشه، باعث میشه که رویداد مورد نظر رُخ نده. / در اینجا جلوی رویداد onkeypress رو میگیره و برای همین اون حرف ثبت نمیشه.
این قضیه مقدار برگشتی true/false توی onevent جریان داره ولی توی addEventListener صادق نیستش. اونجا از event.preventDefault() استفاده کنید.
document.querySelector("#searchBox").onkeypress = function(event) { return /[a-z0-9]/i.test(event.key) };
یا
document.querySelector("#searchBox").addEventListener('keypress', (event) => {
if (!/[a-z0-9]/i.test(event.key)) event.preventDefault();
})توضیحات بیشتر در خصوص مقدار برگشتی در onevent ها:
http://www.permadi.com/tutorial/jsEventBubbling/index.html