質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2852閲覧

枝番持ちテーブルにおける入力データの重複チェック

rokuro

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/02/21 03:05

編集2018/02/21 03:06

初心者です。
java(フレームワーク:struts2)とjavascriptを用いて、情報管理システムを作っています。
次のような特徴を持つ表に、下記のような機能を実装したいのですがうまくいきません。

表の特徴
1.表の列数は5列、行数はn(ユーザーが決めることができる)表です
2.表のそれぞれのセルはテキストボックスとなっており、数字(文字も可能)を入力することができ、submitボタンを押下するとサーバー側にデータを送信できます。
3.各セルごとにユーザーIDが4文字、枝番が1文字入るテキストボックスを持っています←要点です

イメージ図
// | 列1  | 列2   |   列3 |    列4 |  列5 |
行1|ID1| 枝番1 | ID2 | 枝番2 | ID3 |枝番3 | ID4 | 枝番4 | ID5 | 枝番5 |
行2|ID6| 枝番6 | ID7 | 枝番7 | ID8 |枝番8 | ID9 | 枝番9 | ID10 | 枝番10 |

実装したい機能
submitボタンを押下時に次の機能を実装したいです
1、入力内容に未入力があれば、そのセルのバックグラウンドカラーを赤に変更
2、入力内容にID及び枝番の両方が重複していた場合、そのセルのバックグラウンドカラーを赤に変更
3、DBに保存されているデータと入力内容に重複があれば、そのセルのバックグラウンドカラーを赤に変更
4、上記の処理のどれが一つでも行われた場合、上記の変更を施した後、処理を中止します

(例)
,,,, | 列1 | 列2 | 列3 |  列4 | 列5 |
行1 |1111| 1 | 2222 | 2 | | | 4444 | 4 | 5555 | 5 |
行2 |2222| 2 | 7777 | 7 | 8888 | 8 | 9999 | 9 | 1010 | 1 |

DB内
UserID BranchID
9999 9

この場合、行1列2と行2列2が重複、行1列3が未入力 行2列4がDBのデータと被ってるため、ボタン押下時にセルの背景色を赤色に変更し、本来行われる処理を中止します

アドバイスもしくは解決していただきたい内容
・それぞれの要素内容を取得する方法
・ユーザーIDと枝番両方を用いた重複チェックの仕方(一つのテキストボックスごとの重複チェックは可能のようですが、二つのテキストボックスを用いた重複チェックの仕方がわかりません)

jsp html

<table id="tbl"> <thead class="tablehead">   <tr>   <th class="tablehead"></th>   <th colspan="2" class="tablehead">A</th>   <th colspan="2" class="tablehead">B</th>   <th colspan="2" class="tablehead">C</th>   <th colspan="2" class="tablehead">D</th>   <th colspan="2" class="tablehead">E</th>   </tr> </thead> <tbody> <% List<RegistBean> list = ((List<RegistBean>)con.getValueStack().findValue("list")); int tnum = bean == null ? 0 : bean.getNumberOfSheet(); int a = tnum/5; int b = tnum%5; %> <% for(int i=1; i<=a; i++){ %> <tr> <th class="padding10"><%=i%></th> <%for(int j=1; j<=5; j++){ %> <td class="padding0"><label><input type="text" name="userlist" placeholder="cell<%=5*i-5+j%>" value="<%=list.get(5*i-5+j-1).getTicketNo()%>" class="cellnum"></label></td> <td class="padding0"><label><input type="text" name="branchlist" placeholder="br<%=5*i-5+j%>" value="<%=list.get(5*i-5+j-1).getBranchNo()%>" class="brnum"></label></td> <input type="hidden" name="seqlist" value="<%=list.get(5*i-5+j-1).getSeq()%>"> <%}%> </tr> <% } %> <tr> <% if(b != 0){ %> <th class="padding10"><%=a+1%></th> <% } %> <% for(int k=1; k<=b; k++){ %> <td class="padding0"><label><input type="text" name="userlist" placeholder="cell<%=5*a+k%>" value="<%=list.get(5*a+k-1).getTicketNo()%>" class="cellnum"/></label></td> <td class="padding0"><label><input type="text" name="branchlist" placeholder="br<%=5*a+k%>" value="<%=list.get(5*a+k-1).getBranchNo()%>" class="brnum"/></label></td> <input type="hidden" name="seqlist" value="<%=list.get(5*a+k-1).getSeq()%>"> <%} for(int l=1; l<=5-b;l++){ %> <td class="padding0 darkgray"></td> <td class="padding0 darkgray"></td> <%}%> </tr> </tbody> </table>

試したこと

・一つのセルに二つのテキストボックスがあるため、次のような列と行で指定する方法で要素を取得できませんでした

// td内のtrをループ。rowsコレクションで,行位置取得。 for (var i=0, rowLen=tblTbody.rows.length; i<rowLen; i++) { // tr内のtdをループ。cellsコレクションで行内セル位置取得。 for (var j=0, colLen=tblTbody.rows[i].cells.length ; j<colLen; j++) { //i行目のj列目のセルを取得 var cells = tblTbody.rows[i].cells[j];

・一つのテキストボックスを持つセルの重複チェックの方法は調べてみていくつかありましたが、枝番を持つセルの重複チェック方法は見つかりませんでした。

以上から
・それぞれの要素内容を取得する方法
・ユーザーIDと枝番両方を用いた重複チェックの仕方
の方法をご教授お願いいたします。

java8
tomcat8
struts2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/02/21 04:25

DBのデータとの比較はサーバーに問い合わせなければわからないと思いますが、どのようにする予定でしょうか?
rokuro

2018/02/21 14:20

strutsのformタグを使ってサーバーと接続する予定です。
guest

回答1

0

ベストアンサー

jspとjs見た感じの初心者だと、
隣で誰かに教えてもらわないと難しい気がします。
出来る人とペアプロがベストです。

簡単ですが質問に対する回答です。

それぞれの要素内容を取得する方法

inputタグに一意になるid属性を付けて、それを指定します。
document.getElementById(id)みたいな感じで取得できるはずです。

ユーザーIDと枝番両方を用いた重複チェックの仕方

ユーザーID+":"+枝番みたな文字列でも重複チェックできると思いますが、
どうしてできないのでしょうか。

まずは、1列3行くらいの簡単な画面を作ってみることをお勧めします。
見た目なんかは後でどうにでもなります。センスは必要ですが、、、

チェックの方法ですが、

  • javascriptでチェック
  • java(struts2)でチェック

の2つでチェックすることができます。
おそらくjavascriptでチェックすると、

3、DBに保存されているデータと入力内容に重複があれば、そのセルのバックグラウンドカラーを赤に変更

これで行き詰まると思うので、java(struts2)でチェックのほうがいいと思います。

こちらも簡単ですが、各チェックの方法です。

javascriptでチェック

重複になりますが
inputタグに一意になるid属性を付けてそれを指定します。
そうするとjavascriptで一意のidから値を取得できます。

DBとの比較はjavascript側はajaxで実装、サーバ側はRESTを作る必要があります。

java(struts2)でチェック

サーバ側でユーザIDと枝番のセットを確認できているでしょうか。
例えばActionSupprotクラスのvalidate()メソッドをoverrideすることで、
チェックできます。
ちょっと調べた感じだとフィールドの色の付け方が分かりませんでしたが。

投稿2018/02/22 03:43

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rokuro

2018/02/24 00:15

なるほど!できそうな気がしてきました!試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問