1

目的: 3 つのフィールドを含むフォームを作成しました。フォームに空のフィールドが 1 つでも残っている場合、それが認識され、(空のフィールドごとに) エラー メッセージが出力され (警告されず)、フォームの送信が必要です。キャンセルされます。エラー メッセージは最初は非表示になっており、フィールドが空のままになっている場合にのみ表示されるようにする必要があります。

問題: 送信を停止するコードが機能していません。エラーがあれば投稿してください。alert() のみを使用し、非表示の validaeFormOnSubmit() と validateEmpty() を表示および削除するコードを削除すると機能します。

形:

<form action="start.php" method="post" onsubmit="return validateFormOnSubmit(this)" >
<table>
  <tbody>
  <tr>
     <td><label for="fname">Team Name:</label><br></td>
    <td><input name="fname"  type="text" autocomplete="off">&nbsp <div id="1"> Field is 
required 
</div></td>
  </tr>   
  <tr>
 <td><label for="contact">Contact 1 :</label> </td>
 <td><input type="text"  maxlength = "10" name="contact" > &nbsp<div id="2"> Field 
 is required </div></td>
  </tr>   
  <tr>
    <td><label for="contact2">Contact 2:</label> </td>
    <td><input type="text"  maxlength = "10" name="contact2" >&nbsp <div id="3"> Field is     
    required </div></td>
  </tr>  
  <tr>
    <td>&nbsp;</td>
    <td><input name="Submit" value="Send" type="submit" ></td>
    <td>&nbsp;</td>
  </tr>
  </tbody>
</table>
</form>

脚本

<script >
$(document).ready(function () {
            var i;
            for(i=1;i<=3;i++)
                {
                var k='#'+i;
                $(k).hide();}

            });

function validateFormOnSubmit(theForm) {
    var reason = "";

   reason += validateEmpty(theForm.fname,1);
   reason += validateEmpty(theForm.contact,2);
   reason += validateEmpty(theForm.contact2,3);

  if (reason != "") {

    return false;
  }
  return true;
  }

  function validateEmpty(fld,k) {
    var error = "";

    if (fld.value.length == 0) {
        fld.style.background = 'Yellow'; 
        error = "error";
        var k='#'+i;
        $(k).show();
    } else {
        fld.style.background = 'White';
        var k='#'+i;
            $(k).hide();
        }
        return error;  
    }
    </script>
4

2 に答える 2

1

次のことをお勧めします。

  • onsubmit="..."HTML から を削除します
  • onsubmitプログラムでイベントにバインドします。

    $(...).on("submit", validateFormOnSubmit);
    
  • validateFormOnSubmitそれに応じて署名を変更します。

    function validateFormOnSubmit(event) {
        // use this instead of theForm
    }
    
  • falsedoを返す代わりにevent.preventDefault()、つまり:

    if (reason != "") {
        event.preventDefault();
    }
    
于 2013-09-30T14:00:07.290 に答える
0

これはどうですか ? http://jsfiddle.net/45Kfy/

<code>
  $(document).ready(function () {
               $("input").each(function(index, item)
               {
                   if ($(item).val().length == 0)
                   {
                      $(item).css("background-color", "red");
                   }
               });
           });
 </code>

documentReady() の代わりに、ボタンのクリックをトリガーする必要があります。( jQuery は .each ループで入力値を取得します) また、ボタンも入力フィールドであることに注意してください。

于 2013-09-30T13:55:15.883 に答える