PDA

View Full Version : سوال: برسی مقدار تکست باکس



padidehco
شنبه 09 شهریور 1392, 15:03 عصر
من این کد جاوا را نوشتم
حالا می خوام وقتی مقدار تکست باکس برابر 10 بود کاری نداشته باشه
اما اگر کمتر یا بیشتر بود ارور بده و جلو ارسال اطلاعات را بگیره

<form>
<input type="text" id="idcode">
<input type="submit">
</form>
<script>
var textBox = document.getElementById("idcode");
var textLength = textBox.value.length;
if(textLength == 10)
{
//green
textBox.style.backgroundColor = "#00FF00";
}
else
{
//red
textBox.style.backgroundColor = "#FF0000";
}
}
</script>

اما کد بالا کار نمی کنه

padidehco
شنبه 09 شهریور 1392, 18:27 عصر
کسی نبود کمک کنه؟

2undercover
شنبه 09 شهریور 1392, 18:37 عصر
خوب اینکاری که شما انجام دادی کلا مشکل داره شما باید با استفاده از رویداد onsubmit اون فرمی که تکست باکس توش هست تعداد حروف وارد شده در تکستباکس رو بشمری اینجوری که شما نوشتی بلافاصله که صفحه بارگذاری میشه یکبار اجرا میشه!


document.forms['form_name'].onsubmit = function() {
// کد های شما برای بررسی تکست باکس
}

padidehco
شنبه 09 شهریور 1392, 19:05 عصر
داداش شرمنده می شه بیشتر توضیح بدید
من برنامه نویسی سی شارپ بلدم و از جاوااسکریپت هیچی بلد نیستم
اگر ممکنه بیشتر من را راهنمایی کنید
با تشکر فراوان

engmmrj
شنبه 09 شهریور 1392, 19:26 عصر
من این کد جاوا را نوشتم
حالا می خوام وقتی مقدار تکست باکس برابر 10 بود کاری نداشته باشه
اما اگر کمتر یا بیشتر بود ارور بده و جلو ارسال اطلاعات را بگیره

<form>
<input type="text" id="idcode">
<input type="submit">
</form>
<script>
var textBox = document.getElementById("idcode");
var textLength = textBox.value.length;
if(textLength == 10)
{
//green
textBox.style.backgroundColor = "#00FF00";
}
else
{
//red
textBox.style.backgroundColor = "#FF0000";
}
}
</script>

اما کد بالا کار نمی کنه

مشکل کد شما اینه کد به محض لود صفحه اون کد اجرا میشه , شما باید طوری بنویسید که وقتی روی Submit کلید شد اون کد اجرا شود .
forms['form_name'] به جای form_name نام فرمتون رو بنویسید .


document.forms['form_name'].onsubmit = function() {
var textBox = document.getElementById("idcode");
var textLength = textBox.value.length;
if(textLength == 10)
{
//green
textBox.style.backgroundColor = "#00FF00";
}
else
{
//red
textBox.style.backgroundColor = "#FF0000";
}
}

padidehco
شنبه 09 شهریور 1392, 19:45 عصر
اول از همه از شما تشکر می کنم به خاطر راهنمایی تون

راهی نداره که در کد بالا بجای یک ای دی چند تا ای دی معرفی کنیم؟

document.forms['myform'].onsubmit = function(e) {
var textBox = document.getElementById("idcode");
var textLength = textBox.value.length;
if(textLength == 10)
{
textBox.style.boxShadow = "";
}
else
{
//red
textBox.style.boxShadow = "0px 0px 3px #ff0000";
e.preventDefault();
}
}
document.forms['myform'].onchange = function(e) {
var textBox = document.getElementById("idcode");
var textLength = textBox.value.length;
if(textLength == 10)
{
textBox.style.boxShadow = "";
}
else
{
//red
textBox.style.boxShadow = "0px 0px 3px #ff0000";
e.preventDefault();
}
}

در کد بالا همانطور که می بینید
من تمام کد ها را در دو خاصیت پیاده سازی کردم
ایا نمی شه دو کد بالا را یکی کرد یا اون را خلاصه کرد که کار هر دو کد بالا را انجام دهد؟

engmmrj
شنبه 09 شهریور 1392, 20:37 عصر
باید آیدی ها رو به صورت آرایه در بیارین و توسط Loop آیدی ها رو چک کنید .

padidehco
شنبه 09 شهریور 1392, 21:20 عصر
دادش خیلی ممنون از راهنماییت
اما من برنامه نویسی سی شارپ بلدم و از جاوااسکریپت هیچی سر در نمی یارم
اگر (طبق کد بالا) تعداد ای دی ها زیاد شد باید اونوقت چی کار کنم؟
اگر می شه بیشتر توضیح بدید
خیلی خیلی ممنون

engmmrj
شنبه 09 شهریور 1392, 21:39 عصر
کد زیر رو تست کنید :


array_box = new Array('name','lname');
function id(id) {
return document.getElementById(id);
}
document.forms['myform'].submit = function(e) {

count = ( array_box.length - 1 ) ;

for ( i = 0 ; i <= count ; i++ ) {

var id_value = id(id[i]).trim ;

if( id_value.value == '' || id_value.value == null ) {
id_value.style.boxShadow = "0px 0px 3px #ff0000";
}
else
id_value.style.boxShadow = "";
}


}