صحت درست بودن کد ملی با جاوا اسکریپت
یک کد در پیدا کردم که با اون میشه کد ملی رو چک کرد اما مشکلم اینه که میخوام به کد دیگه ای ادقامش کنم اما نمیدونم چطوری ؟
کد چک کردن کد ملی:
<script type="text/javascript">
function checkCodeMeli(code)
{
var L=code.length;
if(L<8 || parseInt(code,10)==0)
return false;
code=('0000'+code).substr(L+4-10);
if(parseInt(code.substr(3,6),10)==0)
return false;
var c=parseInt(code.substr(9,1),10), s=0;
for(var i=0;i<9;i++)
s+=parseInt(code.substr(i,1),10)*(10-i);
s=s%11;
return (s<2 && c==s) || (s>=2 && c==(11-s));
}
</script>
<script type="text/javascript">
function checkMelliCode(meli_code)
{
if (meli_code.length == 10)
{
if(meli_code=='1111111111' || meli_code=='2222222222' || meli_code=='3333333333' || meli_code=='4444444444' || meli_code=='5555555555' || meli_code=='6666666666' || meli_code=='7777777777' || meli_code=='8888888888' || meli_code=='9999999999' )
{
alert(11);
}else{
c = parseInt(meli_code.charAt(9));
n = parseInt(meli_code.charAt(0))*10 + parseInt(meli_code.charAt(1))*9 + parseInt(meli_code.charAt(2))*8 + parseInt(meli_code.charAt(3))*7 + parseInt(meli_code.charAt(4))*6 + parseInt(meli_code.charAt(5))*5 + parseInt(meli_code.charAt(6))*4 + parseInt(meli_code.charAt(7))*3 + parseInt(meli_code.charAt(8))*2;
r = n - parseInt(n/11)*11;
if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r))
{
alert('کد ملی صحیح می باشد');
}
else
{
alert('کد ملی وارد شده معتبر نمی باشد');
}
}
}
}
</script>
</head>
<body>
<font color="red" style="cursor:pointer;" onclick="checkMelliCode('1234567891');">show</font>
</body>
</html>
کد خودم رو به صورت زیر نوشتم اما 2 تا مشکل وجود داره
1- اگر عدد های وارد شده در تکسباکس کمتر از 10 رقم باشده کد اجرا نمیشه
2- وقتی که کد 10 رقمی وارد میشه و معتبر نیست پیغام خطا به نمایش در می آید اما عملیات متوقف نمیشه و اطلاعات به دیتابیس ارسال میشه
function validateForm(){
var field = document.forms["form1"]["textfield1"].value;
if (document.getElementById('textfield1').value == ''){
document.getElementById('name-error').innerHTML = 'نام و نام خانوادگی مالک کالا را وارد نمایید';
return false;
}
else{
document.getElementById('name-error').innerHTML = '';
}
if(document.getElementById('textfield2').value == ''){
document.getElementById('melli-error').innerHTML = 'کد ملی مالک کالا را وارد نمایید!';
return false;
}
else{
document.getElementById('melli-error').innerHTML = '';
}
if(document.getElementById('textfield4').value == ''){
document.getElementById('tel-error').innerHTML = 'لطفا تلفن ثابت را وارد نمایید';
return false;
}
else{
document.getElementById('tel-error').innerHTML = '';
}
if(document.getElementById('textfield5').value == ''){
document.getElementById('mobil-error').innerHTML = 'لطفا تلفن همراه را وارد نمایید';
return false;
}
else{
document.getElementById('mobil-error').innerHTML = '';
}
if(document.getElementById('textfield6').value == ''){
document.getElementById('post-error').innerHTML = 'لطفا کد پستی را وارد نمایید';
return false;
}
else{
document.getElementById('post-error').innerHTML = '';
}
if(document.getElementById('textfield7').value == ''){
document.getElementById('address-error').innerHTML = 'لطفا آدرس مالک کالا را وارد نمایید';
return false;
}
else{
document.getElementById('address-error').innerHTML = '';
}
email=document.form1.textfield3.value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
if(email!="")
{
if(atpos<1||dotpos<atpos+2||dotpos +2>=x.length)
{
document.getElementById('mail-error').innerHTML ="لطفا ايميل آدرس را صحيح وارد كنيد";
return false;
}
}
else{
document.getElementById('mail-error').innerHTML = '';
}
meli_code=document.form1.textfield2.value;
if (meli_code.length == 10)
{
if(meli_code=='1111111111' || meli_code=='2222222222' || meli_code=='3333333333' || meli_code=='4444444444' || meli_code=='5555555555' || meli_code=='6666666666' || meli_code=='7777777777' || meli_code=='8888888888' || meli_code=='9999999999' )
{
alert(11);
}else{
c = parseInt(meli_code.charAt(9));
n = parseInt(meli_code.charAt(0))*10 + parseInt(meli_code.charAt(1))*9 + parseInt(meli_code.charAt(2))*8 + parseInt(meli_code.charAt(3))*7 + parseInt(meli_code.charAt(4))*6 + parseInt(meli_code.charAt(5))*5 + parseInt(meli_code.charAt(6))*4 + parseInt(meli_code.charAt(7))*3 + parseInt(meli_code.charAt(8))*2;
r = n - parseInt(n/11)*11;
if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r))
{
document.getElementById('melli-error').innerHTML ="";
}
else
{
document.getElementById('melli-error').innerHTML ="کد ملی وارد شده معتبر نمی باشد";
}
}
}
}
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
:متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر::متفکر:
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
آی آر نیک اسکریپتشو داره
میتونی بکشی بیرون
البته مطمعن نیسم کلاینت باشه
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
:متفکر::متفکر::متفکر::متعجب:: تفکر:
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
من که سر در نمیارم گه چکار باید بکنم
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
توی سایت nic.ir، توی بخش ثبت نامش درست بودن کد ملی چک میشه. البته الان رفتم چک کردم و دیدم که کدش سمت سروره! :))
اما یه سوال :
<font color="red" style="cursor:pointer;" onclick="checkMelliCode('1234567891');">show</font>
onclick توی تگ فونت جواب میده؟
function checkMelliCode(meli_code)
{
if (meli_code.length == 10)
{
if(meli_code=='1111111111' || meli_code=='2222222222' || meli_code=='3333333333' || meli_code=='4444444444' || meli_code=='5555555555' || meli_code=='6666666666' || meli_code=='7777777777' || meli_code=='8888888888' || meli_code=='9999999999' )
{
alert(11);
}else{
c = parseInt(meli_code.charAt(9));
n = parseInt(meli_code.charAt(0))*10 + parseInt(meli_code.charAt(1))*9 + parseInt(meli_code.charAt(2))*8 + parseInt(meli_code.charAt(3))*7 + parseInt(meli_code.charAt(4))*6 + parseInt(meli_code.charAt(5))*5 + parseInt(meli_code.charAt(6))*4 + parseInt(meli_code.charAt(7))*3 + parseInt(meli_code.charAt(8))*2;
r = n - parseInt(n/11)*11;
if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r))
{
alert('کد ملی صحیح می باشد');
}
else
{
alert('کد ملی وارد شده معتبر نمی باشد');
}
}
}
}
توی کد بالا:
1111111111 و 2222222222 و ... رو با ریجکس چک کن.
کد به نظر دسته از لحاظ سینتکس/ اما از لحاظ الگوریتم نمی دونم!
امتحانش کن با یه دکمه و تکست باکس...
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
پست دوبار ثبت شد...
امکان حذفم که نیست...
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
وقتی که کد 10 رقمی وارد میشه و معتبر نیست پیغام خطا به نمایش در می آید اما عملیات متوقف نمیشه و اطلاعات به دیتابیس ارسال میشه
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
function checkMelliCode(codeMelli) {
if (codeMelli.length == 10) {
switch (codeMelli) {
case '0000000000':
case '1111111111':
case '2222222222':
case '3333333333':
case '4444444444':
case '5555555555':
case '6666666666':
case '7777777777':
case '8888888888':
case '9999999999':
return false;
}
var c = parseInt(codeMelli.charAt(9));
var sum = parseInt(codeMelli.charAt(0)) * 10 +
parseInt(codeMelli.charAt(1)) * 9 +
parseInt(codeMelli.charAt(2)) * 8 +
parseInt(codeMelli.charAt(3)) * 7 +
parseInt(codeMelli.charAt(4)) * 6 +
parseInt(codeMelli.charAt(5)) * 5 +
parseInt(codeMelli.charAt(6)) * 4 +
parseInt(codeMelli.charAt(7)) * 3 +
parseInt(codeMelli.charAt(8)) * 2;
r = sum - parseInt(sum / 11) * 11;
return (r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r);
}
return false;
}
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
سلام پست پایین را مشاهده کنید
نقل قول: صحت درست بودن کد ملی با جاوا اسکریپت
var isValidNationalCode = function (input) {
if (!/^\d{10}$/.test(input)
|| input === '0000000000'
|| input === '1111111111'
|| input === '2222222222'
|| input === '3333333333'
|| input === '4444444444'
|| input === '5555555555'
|| input === '6666666666'
|| input === '7777777777'
|| input === '8888888888'
|| input === '9999999999')
return false;
var check = parseInt(input[9]);
var sum = 0;
var i;
for (i = 0; i < 9; ++i) {
sum += parseInt(input[i]) * (10 - i);
}
sum %= 11;
return (sum < 2 && check === sum) || (sum >= 2 && check + sum === 11);
};