Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

アラートボックスが表示されません。

はじめまして。
初めて質問させていただきます。

JavaServletでテキストボックスとボタンを置き、submitすると下に何個でも追記できるプログラムを作りました。
そこに送信時、テキストボックスが空の場合「空です」のアラートボックスが表示され、送信が中断される機能を追加しようと思っています。

下記のようにコーディングした場合、テキストボックス内の状態に関わらず、アラートボックスが表示されません。色々試したところ、入力の有無に関わらず、ボタンを押すたびにアラートボックスが表示されたり、今回のように全く表示されなかったりします。

ちなみに下記がコーディング内容です。
大変お手数かけますが、解決方法をご教示いただけると幸いです。

※WebアプリケーションサーバはTomcatを用いて、アドレスは
http://localhost:8080/study/servlet/alerttest としています。


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

/**
* 送信時にテキストボックスが空の場合"空です"のアラートボックスが 
* 示され、送信を中断させるようにする。
*/

public class alerttest extends HttpServlet
{
// doGetメソッドをオーバーライド
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// ボディ部を出力するためのオブジェクト生成
PrintWriter out = response.getWriter();

// リクエストパラメータの文字エンコーディング名をセット
response.setContentType("text/html; charset=Shift_JIS");
out.println("<html>");
out.println("<head>");
out.println("<title>alerttest</title>");
out.println("<script type='text/javascript'>");
out.println("<!--");
out.println("function startAlert()");
out.println("{");
out.println("var naiyou = document.getElementsByName('moziretsu');");
out.println("if(naiyou == '')");
out.println("{");
out.println("alert('空です');");
out.println("}");
out.println("}");
out.println("// --></script>");
out.println("</head>");
out.println("<body>");
out.println("<FORM action='/study/servlet/alerttest' method='GET'>");
out.println("<INPUT type='text' name='moziretsu'>");
out.println("<INPUT type='submit' value='クエリ送信' onclick='startAlert()'><BR>");
// 入力パラメータの取得
String moziretsuPrm = request.getParameter("moziretsu");
Object moziretsuObj = moziretsuPrm;

// セッションオブジェクトの取りだし
HttpSession session = request.getSession();

// セッションにオブジェクトの追加
if(moziretsuPrm != null)
{
session.setAttribute(moziretsuPrm,moziretsuObj);
}

// セッション属性の一覧を出力
Enumeration names = session.getAttributeNames();
while(names.hasMoreElements())
{
String key = (String)names.nextElement();
out.println(key + "<br>");
}

out.println("</body>");
out.println("</html>");
}
}

3

回答

9277

閲覧

3件の回答

評価

0

これはJavaScript側の問題です。
var naiyou = document.getElementsByName('moziretsu');
で取得できるのは中のテキストデータではありませんから、if文で
naiyou.innerTextとかnaiyou.valueとかやるといいのかも。
確認してないですが。

評価

0

JavaではなくJavaScriptの問題ですね。

多分ですが、

out.println("var naiyou = document.getElementsByName('moziretsu');");


out.println("var naiyou = document.getElementsByName('moziretsu').item(0).value;");
で直ると思います。

評価

0

out.println("var naiyou = document.getElementsByName('moziretsu').item(0).value;");

にしたところ、無事解決しました。
迅速な対応ありがとうございました。

これからもよろしくお願いします。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。