Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

? 發問於 電腦與網際網路程式設計 · 1 十年前

JAVA身分證驗證&提醒視窗

Q1.身分證驗證我是在"網路建置百寶箱"去下載的

但是我的身份證最後一碼是0,他會顯示我的身分證字號是錯誤

要怎麼處理呢?

<script language="JavaScript">

<!--

var local=new Array(34)

local[10]='A'

local[11]='B'

local[12]='C'

local[13]='D'

local[14]='E'

local[15]='F'

local[16]='G'

local[17]='H'

local[18]='J'

local[19]='K'

local[20]='L'

local[21]='M'

local[22]='N'

local[23]='P'

local[24]='Q'

local[25]='R'

local[26]='S'

local[27]='T'

local[28]='U'

local[29]='V'

local[32]='W'

local[30]='X'

local[31]='Y'

local[33]='Z'

function checkid(id){

id=id.toUpperCase()

if(lengtherr(id)){

alert('輸入的字號長度有誤!')

}else if(firstlettererr(id)){

alert('身分證第一碼查無此英文字母:'+id.substring(0,1))

}else if(numerr(id)){

alert('輸入的身分證後九碼應為數字!')

}else if(checkerr(id)){

alert('您輸入的身分證檢查碼有誤!')

}else{

alert('您輸入的身分證字號完全正確!')

}

}

function lengtherr(id){

if(id.length<10)

return 1

else

return 0

}

function firstlettererr(id){

var fl=id.substring(0,1)

var haserr=1

for(i=10;i<=33;i++){

if(local[i]!=fl)

continue

else{

haserr=0

break

}

}

if(haserr==1)

return 1

else

return 0

}function numerr(id){

var haserr=0

for(i=1;i<=9;i++){

if(parseInt(id.substring(i,i+1))>0 || id.substring(i,i+1)=='0')

continue

else{

haserr=1

break}

}

if(haserr==1)

return 1

else

return 0

}

function checkerr(id){

var se=new Array(10)

var we=0

var checkcode=0

for(i=10;i<=33;i++){

if(local[i]==id.substring(0,1)){

se[0]=parseInt((i+'0').substring(0,1))

se[1]=parseInt((i+'0').substring(1,2))

break

}

}

for(i=1;i<=9;i++){

se[i+1]=parseInt(id.substring(i,i+1))

}

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

if(i==0)

we=we+se[i]

else

we=we+(se[i]*(10-i))

}

checkcode=((10-mod(we,10))+'0').substring(0,1)

if(checkcode!=id.substring(9,10))

return 1

else

return 0

}

function mod(a,b){

var r

r=Math.round(a/b)

if((b*r)>a)

r-=1

return (a-(b*r))

}

// -->

</script>

<form name="f" onsubmit="checkid(document.f.id.value)">

<input type="text" size="20" maxlength="10" name="id" value='填入您的身分證字號' onFocus="if (this.value=='填入您的身分證字號') this.value='';">

<input type="button" name="bname" value="確定" onclick="checkid(document.f.id.value)">

Q2.

(1)註冊表單有"必填欄位"要怎麼讓他在按下送出後會顯示出未填寫的欄位呢?

(2)多個核取方塊至少要有一個選取該怎麼寫?

麻煩各位了!

更新:

TO bird:

你給我的那個,測試是OK

但是沒辦法傳到資料庫耶!!

2 個解答

評分
  • 1 十年前
    最愛解答

    說明 1.--->

    依據 http://my.so-net.net.tw/idealist/Other/SSN.html 的身份證字號規則,

    檢查號碼是每個相對應數字乘上權數之積相加後除以模數10取其餘數,

    由模數減去餘數得檢查號碼,若餘數為0時,則設定其檢查碼為0。

    照此邏輯,我將您問題中第101~105行,即:

    =======================================================================

    checkcode=((10-mod(we,10))+'0').substring(0,1)

    if(checkcode!=id.substring(9,10))

    return 1

    else

    return 0

    =======================================================================

    修改如下:

    =======================================================================

    //乘上權數之積+檢查碼 % 10

    we = (we + eval(id.substring(9,10)))%10;

    //若為 0 即正確 return 0 否則 return 1;

    if(we==0) return 0;

    else return 1;

    =======================================================================

    說明 2.--->

    由於字數限制,故將

    Q2.

    (1)註冊表單有"必填欄位"要怎麼讓他在按下送出後會顯示出未填寫的欄位呢?

    (2)多個核取方塊至少要有一個選取該怎麼寫?

    貼於底下 url

    http://tw.myblog.yahoo.com/jw!UTViSXebCB4YjdqIuON7...

  • ?
    Lv 6
    1 十年前

    這裡有正確的javascript驗證

    http://www.vcnet.tw/inmarkblue/markshu?n=convew&i=...

    2008-04-12 15:35:27 補充:

    您好:

    寫入資料庫要用後端語言, 例如asp.net c#

    client端負責對資料做驗證格式而已

    server端再寫對資料庫的存取

    就是一般的client server架構

還有問題嗎?立即提問即可得到解答。