質問編集履歴

1 html追加

oldSatoimo

oldSatoimo score 19

2017/09/07 14:18  投稿

scriptで入力値チェックした後にフォーカスを当てる方法
日付の入力値チェックをした後、結果がNGならテキストボックスにフォーカスを当てた状態に戻したいのですが、うまくいきません。
onchangeを使用しているのですが、どのように記載したら良いでしょうか。
HTMLはテーブルをループで10行出し、idは連番を振っています。  
```
```javascript
<script>
   //日付入力チェック(obj=入力値)
   function expensesDateCheck(obj,which) {
       //入力値
       var date = obj.value;
       var errorFlag = 0;
       //日付空取得した場合
       while(true){
           
           // 書式チェック
           if (!date.match(/^\d{4}\/\d{2}\/\d{2}$/)) {
               // エラー設定
                errorFlag = 1;
               break;
           }
~中略~
           //存在しない日付があったらエラー(?)
           if ((dateDate.getFullYear() != yyyy) || (dateDate.getMonth() != mm)
                   || (dateDate.getDate() != dd)) {
               // エラー設定
                errorFlag = 1;
               break;
           }
           break;
       }
       //どこかでエラー起こしたか
       if(errorFlag == 1){
           // エラーを出力
           if(which == "ymd"   ){
           alert("<fmt:message bundle="${msg}" key="ER-DSP-MSG-00001" />");
           }else if(which == "md"   ){
               alert("<fmt:message bundle="${msg}" key="ER-DSP-MSG-00002" />");
       }
           // エラーが発生したtextboxにフォーカスを当てたい
      【ここに記載】
       return;
   }
   }
</script>
```  
 
 
 
```html  
       <table border="1" style="border-collapse: collapse">  
           <%-- テーブルを10 出す --%>  
           <c:forEach var="loopCount" begin="1" end="10" step="1">  
               <tr>  
                   <td align="center">  
                       <%-- No --%>  
                       <label for="idVoucherNo" style="width: 99%;"> <c:out  
                               value="${loopCount}" />  
                       </label>  
                   </td>  
                   <td>  
                       <%-- DB処理日付 --%>  
                       <c:if test="${exForm.searchFlag.equals('1') }">  
                           <input type="text" name="nameDate" id="idDate${loopCount}"  
                               tabindex="8" style="width: 99%; border: none;"  
                               value="${exForm.searchList[loopCount-1].shorihiduke}"  
                               onChange="expensesDateCheck(this,'md')" />  
                       </c:if>  
                       <%-- DBシステム日付 --%>  
                       <c:if test="${!exForm.searchFlag.equals('1') }">  
                           <input type="text" name="nameDate" id="idDate${loopCount}"  
                               tabindex="8" style="width: 99%; border: none;"  
                               value="${exForm.dateMmDd}"  
                               onChange="expensesDateCheck(this,'md')" />  
                       </c:if>  
                   </td>  
                   <td>  
                   </td>  
~中略~  
                   <td>  
                   </td>  
               </tr>  
           </c:forEach>  
       </table>  
 
```
  • JavaScript

    26535 questions

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

  • HTML

    15858 questions

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

  • JSP

    1279 questions

    JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る