2016年7月28日 星期四

JavaScript內判斷String是否為有效數字

當使用者表單內輸入時,也許有的資料是只能輸入數字,因此就有必要在送出前檢查那些使用者輸入的String是否可轉換為有效數字;isNaN()便可以用來檢查,只是isNaN()原本是用來檢查String是否為純文字,如果有數字的話便會返回為false,所以運用時要注意。

HTML處的內容:
<form action = "#" onsubmit = "return check();">
    <input type = "text' id = "age" value = "">
</form>
JavaScript處的內容:
<script type="text/javascript">

    function check()
    {
        var age = document.getElementById( "age" ).value;

        if( isNaN(  age) )
        {
            alert( '該資料不可包含文字!' );
        }
    }

</script>

Java內判斷String是否為有效數字的方式

通常要把String轉換為Integer時,都得先知道String的內容是不是純數字,這樣轉換才會正確;所以找了一下判斷的方式,有NumberUtils.isNumber()、StringUtils.usNumeric()和StringUtils.isNumericSpace()三種,要使用這些方法的話,必需要下載Apache Commons Lang的封包檔,並匯入到Project內。

Apache Commons Lang可去其官網處下載:
http://commons.apache.org/proper/commons-lang/download_lang.cgi

像我便是下載commons-lang3-X.X-bin.zip,解壓縮後把其中的jar檔匯入到Eclipse的Project內。

接著撰寫程式:
import java.util.*;
import org.apache.commons.lang3.math.NumerUtils;

public class XXX {

    public static void main(String[] args)
    {
        String testString = "A1";

        System.out.rintln( NumberUtils.isNumber( testString ) );
    }
}
是文字便為false,是數字便為true。

2016年7月21日 星期四

HTML內顯示和隱藏指定的元件

在HTML內,也許會有一些要先隱藏後顯示的按鈕、輸入框或選項存在,這時就可以藉由使用者點擊按鈕、或是達成某項條件而改變;這邊來寫一個按鈕,點擊後可以改變隱藏的輸入框為顯示狀態。
--------------------------------------------------------------------------------------------------------
HTML處的寫法:
<a href = "javascript:showPasswordInput()">重置密碼</a>

<tr id = "passwordRow" style = "display:none">
    <input type = "text" name = "password" id = "passwordID" value = "">
</tr>
--------------------------------------------------------------------------------------------------------
JavaScript處的寫法:
<script type="text/javascript">

function showPasswordInput()
{
    var passwordRow = document.getElementById( 'passwordRow' );

    passwordRow.style.display = "";
}

</script>
--------------------------------------------------------------------------------------------------------
一開始<tr>那行內的密碼輸入框是隱藏的,接著點擊按鈕後在Function內重新設定style.display成顯示狀態。

style.display有很多屬性,比較常用的有:
style.display = "none"
style.display = "block"
style.display = "inline"......等

這邊是很無厘頭的寫style.display = ""。

使用Javascript來取得、更改HTML中的值

這看起來似乎是基本中的基本,寫網頁十一定要懂的東西;但很抱歉,我在寫網頁這領域就是這麼菜,所以趕快來記下這必備的基本用法。

假設HTML處有一個輸入框:
<form name = "userDataEdit">
<input type = "text" name = "username" id = "usernameID" value = "">
接著在Javascript處,有兩種寫法,利用<form>的name和該id,以及直接找該id的寫法。
--------------------------------------------------------------------------------------------------------
在Javascript處,利用<form>的name和該id的寫法:
<script type="text/javascript">

var username = document.userDataEdit.usernameID.value;

document.userDataEdit.usernameID.value = "Kimdick";

</script>
--------------------------------------------------------------------------------------------------------
在Javascript處,直接找該id的寫法:
<script type="text/javascript">

var username = document.getElementById( 'usernameID' ).value;

document.getElementById( 'usernameID' ).value = "Kimdick";

</script>
--------------------------------------------------------------------------------------------------------

重點就是利用設定id名稱,來讓Javascript尋找並更改其數值。

2016年7月20日 星期三

HTML和Javascript之間互相傳值

在一個JSP內,通常會用到HTML、Javascript和Java語言,而HTML和Javascript間會有需要傳遞數值資料的情況發生;雖然對於那些寫網頁的老手可能是基本中的基本,但對於我這個根本沒碰過寫網頁的外行人則是困難重重,所以這邊特別記錄一下好提醒往後的自己。
--------------------------------------------------------------------------------------------------------
HTML傳值到JavaScript內:
    HTML的寫法:
<input type = "button" name = "test" value = "test" onclick = "showAlert( 'test' );">
    主要是用Function的方式夾帶數值過去

    JavaScript的寫法:
<script type="text/javascript">

function showAlert( lockTime )
{
    alert( message );
}

</script>
--------------------------------------------------------------------------------------------------------
JavaScript傳值到HTML內:
    JavaScript的寫法:
<script type="text/javascript">

function showAlert()
{
    if( confirm( '你確定要傳送此數值嗎?' ) )
    {
        document.getElementById( 'dataID' ).value = 'Yes';
    }
}

</script>
    主要是使用document.getElementById().value來設定該指定id的value

    HTML的寫法:
<input type = "hidden" name = "data" id = "dataID" value = "No">
    主要是設定id後,讓JavaScript可以依照先前找到的id,把新數值設定在value內

2016年7月13日 星期三

Java內控制資料庫的AutoCommit、Commit和Rollback

在控制資料庫的執行時,一般在Eclipse內是設定為自動Commit的;可是如果遇到需要transaction的情況,就不能把環境設定為自動Commit,而得用手動的方式Commit出去;如果遇到錯誤的話,還得Rollback回來之前所有已執行的動作。

所以來列出這三個API:
import java.sql.*;

public class XXX {

    public static void main(String[] args)
    {
        Connection connection;

        try
        {
            connection.setAutoCommit( false );
            connection.commit();
            connection.rollback();
        }
        catch( Exception e )
        {
            e.printStackTrace();
        }
    }
}
這三個API必需要在Try-Catch內才能執行

Java的Try-Catch錯誤表現方式

在使用Java的Try-Catch,有個很好用的錯誤表現方式:
Integer x = 1;

try
{
    if( x > 0 )
    {
        throw new Exception( "錯誤" );
    }
}
catch (Exception e)
{
    e.printStackTrace();
}
這樣透過throw new Exception(),就會跳到catch()的部分,並且會在console上出現訊息。

HTML回到上一頁的方式

在撰寫HTML時,碰到要告知錯誤結果時,會需要再接一個回到上一頁的動作,這樣感覺才會連貫,所以查了一下,主要是JavaScript的history.back()這個API,就可執行返回上一頁的功能。

這裡用在一個按鈕上:
<button onclick = "window.history.back();">返回前一頁</button>

HTML內,不會因為Enter按鍵而觸發Submit的方式

在撰寫HTML時,會使用<form>來執行動作,例如以下情況就很常見:
<form action="XXXServlet" method = "post">
    <input type = "text" name = "username" value = "">
    <input type = "text" name = "password" value = "">
    <input type = "submit" name = "login" value = "登入" >
</form>
原本的目標是希望使用者輸入完帳號和密碼後,再按下登入的按鈕來進入系統;可是因為輸入的行為也在<form>內,因此在任何一個輸入框內按下Enter鍵的話,就會等於submit,還沒按下按鈕就會執行action。

但是一般在輸入過程中,人們有時會按下Enter,例如中文輸入法等等的情況,也許你正填寫一大堆的資料,結果在第一個輸入格時按下Enter,然後就自動執行action了......

查了一下,基本上歸納出有兩大類手段可解決:使用JavaScript的Listener來監聽按鈕事件,和使用HTML的onkeypress功能來過濾。我首先試了JavaScript的Listener,但怎麼試都不成功,並且這個方式還須寫不少程式碼,所以我選擇使用HTML的onkeypress功能,只需一行就可搞定,並且可寫在你所需要的地方。

所以將程式改為下面的情況,就不會再因為Enter鍵而觸發action了:
<form action="XXXServlet" method = "post" onkeypress="return event.keyCode != 13;>
    <input type = "text" name = "username" value = "">
    <input type = "text" name = "password" value = "">
    <input type = "submit" name = "login" value = "登入" >
</form>
也就是在第一行後面加上onkeypress="return event.keyCode != 13 你也可以視情況,寫在<input>、<select>等內。

簡單又好用,我最喜歡這種的了......