PDA

View Full Version : سوال: چگونگی تشخیص ورود کاراکتر فارسی به text box با java script?



L_eskandary
یک شنبه 25 اردیبهشت 1390, 16:18 عصر
سلام دوستان
راستش من می خوام تعداد کاراکترهای وارد شده به text box رو تو onKeyUp بشمارم خوب تا اینجا که مشکلی نیست ولی خوب من باید بتونم تو همون تابعی که با javascript برا اینکار نوشتم تعداد صفحات رو هم بشمارم . یعنی مثلا اگه textbox حاوی کاراکتر فارسی بود هر 70 کاراکتر به عنوان یه صفحه در نظر گرفته بشه و اگه textbox فقط کاراکترهای انگلیسی رو داشت هر 160 کاراکتر . و از اونجایی که زیاد با java script و کد نویسی تو اون تجربه ندارم گفتم دوستان در این زمینه راهنمایی کنن .:خجالت:(فک کردم با keyCode میشه یه کارایی کرد ولی خوب اون فقط کد دکمه رو می ده! و همچنین اگه بخوام تو تقسیمم به عدد بزرگتر گرد کنم باید از چه کدی استفاده کنم ؟)
در ضمن یه موردی هم که پیش اومده اینه که کد زیر رو که برا textcount نوشتم برا دکمه enter دو واحد اضافه می کنه کسی می دونه علت چیه؟



<script type="text/javascript">
function textCounter(field, countfield)
{
var output = document.getElementById(countfield);
if (output == null)
{return;}
else
{
output.value = field.value.length;
}
}
</script>

<script language="javascript" type="text/javascript">
var outputField = '<%= txtOutput.ClientID %>';
</script>

<asp:TextBox ID="txtOutput" runat="server" BackColor="#CCCCCC"
ReadOnly="True" Height="20px" Width="71px" />
<asp:TextBox ID="txtmbody" runat="server" Height="300px"
ontextchanged="txtmbody_TextChanged"
TextMode="MultiLine" Width="550px" onkeyup="textCounter(this, outputField);"
AutoPostBack="True"></asp:TextBox>

به خاطر همه توجهتون ممنونم.

Himalaya
یک شنبه 25 اردیبهشت 1390, 23:19 عصر
سلام


<head runat="server">
<title></title>
<script type="text/javascript">
var charCountInPage = 160;
var totalPage = 0;
function textCounter() {
strLength = document.getElementById('<%= txtmbody.ClientID %>').value.length;
totalPage = Math.ceil(strLength / charCountInPage);
document.getElementById('showTotalPage').innerHTML = "Page: " + totalPage;
document.getElementById('<%= txtOutput.ClientID %>').value = strLength;
}

function findPersianChar(obj) {
var patt = new RegExp("[\u0600-\u06FF]");
if (patt.test(obj.value) == true) {
charCountInPage = 70;
// found persian char
}
else {
charCountInPage = 160;
// can't found persian char
}
textCounter();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="showTotalPage" style="color: Red; font-size: 3.0em" align="center">Page: 0
</div>
<asp:TextBox ID="txtOutput" runat="server" BackColor="#CCCCCC" ReadOnly="True" Height="20px"
Width="71px" />
<asp:TextBox ID="txtmbody" runat="server" Height="300px" TextMode="MultiLine" Width="550px"
onkeyup="findPersianChar(this);" AutoPostBack="True"></asp:TextBox>
</div>
</form>
</body>

L_eskandary
دوشنبه 26 اردیبهشت 1390, 09:04 صبح
karaji333 ممنون به خاطر پاسختون .
یه سوال : علت اینکه برا Enter دو تا به کاراکترها اضافه می کنه چیه ؟
من که نمی تونم بفهمم!!!

Himalaya
دوشنبه 26 اردیبهشت 1390, 11:55 صبح
دلیلشو نمیدونم. ولی میتونی کنترلش کنی. مثلا اینطوری


<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
var charCountInPage = 160;
var totalPage = 0;
var enterCount = 0;
var enterArray = "";
var txt = "";
function textCounter() {
txt = document.getElementById('<%= txtmbody.ClientID %>').value;

enterArray = txt.match(/\n/g);
enterCount = enterArray != null ? enterArray.toString().split(',').length : 0;
document.getElementById('showEnterCount').innerHTM L = "Enter: " + enterCount;

strLength = txt.length - enterCount;
totalPage = Math.ceil(strLength / charCountInPage);
document.getElementById('showTotalPage').innerHTML = "Page: " + totalPage;
document.getElementById('<%= txtOutput.ClientID %>').value = strLength;
}

function findPersianChar(obj) {
var patt = new RegExp("[\u0600-\u06FF]");
if (patt.test(obj.value) == true) {
charCountInPage = 70;
// found persian char
}
else {
charCountInPage = 160;
// can't found persian char
}
textCounter();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="showTotalPage" style="color: Red; font-size: 3.0em" align="center">
Page: 0
</div>
<div id="showEnterCount" style="color: Red; font-size: 3.0em" align="center">
Enter: 0
</div>
<asp:TextBox ID="txtOutput" runat="server" BackColor="#CCCCCC" ReadOnly="True" Height="20px"
Width="71px" />
<asp:TextBox ID="txtmbody" runat="server" Height="300px" TextMode="MultiLine" Width="550px"
onkeyup="findPersianChar(this);"></asp:TextBox>
</div>
</form>
</body>

cut و paste رو هم که حواست هست دیگه

L_eskandary
دوشنبه 26 اردیبهشت 1390, 21:05 عصر
karaji333

کلا حل شد ممنون به خاطر کدها . :تشویق:
یه سوال : بهترین منبع برا شروع یادگیری java script چی هست . البته خوب من تو اینترنت زیاد گشتم ولی مباحث ابتدایی رو تونستم پیدا کنم اگه سایت خوبی در این زمینه سراغ دارین و یا یه منبع خوب که مباحث موجود رو کامل توضیح بده ممنون میشم راهنمایی کنین.

Himalaya
سه شنبه 27 اردیبهشت 1390, 02:50 صبح
w3schools.com/js (http://www.w3schools.com/js/default.asp)

chikar
جمعه 07 مهر 1391, 14:43 عصر
http://www.javascriptkit.com (http://www.javascriptkit.com/)
یکی از بهترین منابع برای یادگیری جاوااسکریپت هست

hamed_hossani
جمعه 07 مهر 1391, 16:34 عصر
فابل pdf
Learn JavaScript And Ajax With w3Schools V413HAV

hadidan
شنبه 04 خرداد 1392, 14:04 عصر
karaji333 ممنون به خاطر پاسختون .
یه سوال : علت اینکه برا Enter دو تا به کاراکترها اضافه می کنه چیه ؟
من که نمی تونم بفهمم!!!

بخاطر اینکه کلید اینتر دو کارکتر میفرسته! یکی کارکتر سر خط و دیگری کاکتر شکستن خط

موفق باشید

aliphp1
دوشنبه 14 اردیبهشت 1394, 21:49 عصر
ببخشید من مشکلم اینه که کدی که با جاوا اسکریپت نوشتم اینتر رو یکی حساب می کنه ولی وقتی همون رشته رو php می شماره دو کاراکتر حساب می کنه
الان چطوری اینتر های توی رشته رو مشخص کنم که یا با فاصله عوض کنم و یا به تعداد اونها به طول رشته شمرده شده اضافه کنم