0

このコードを使用して、イベントが発生classしたときに html 要素のを変更しましたonclick。変更が発生します (つまり、テキストの色が変更されます) が、変更は安定せず、以前のスタイルに戻りclass、私の JavaScript コードは何の効果もないようです。

function submitrequest(){
    var x = document.forms["signupform"]["name"].value;
    if(x.toString().length <= 0){
        var y = document.getElementById("nametd");
        y.className = 'change';
    }
}    

この効果を永続的にするにはどうすればよいですか?

4

2 に答える 2

0

フォームのボタンがクリックされたことを通知するために、クリック ハンドラを定義する必要はありません。フォームには送信ボタンを含めることができます。このボタンがクリックされると、フォームに対して送信イベントが発生します。さらに、ユーザーがボタンをクリックせずに Enter キーを押すと、送信イベントも発生します。したがって、両方の状況を自動的に処理します。

そのように機能するように定義することをお勧めします。

  window.onload = function(){

    document.getElementById('signupform').addEventListener('submit',function(e){

      changeClassOfNametd();
      e.preventDefault(); // this prevents the side from being reloaded by the script.

    });

  };

  function changeClassOfNametd(){
      var nameValue = document.forms["signupform"]["name"].value;
      if(nameValue){ // when value is "" (zero, no signs) it is false anyway
          var y = document.getElementById("nametd");
          y.className = 'change';
          //y.classList.toggle('change'); you can toggle classname "change" too
          // which works that way class="unchange" -> class="unchange change"  
          // you have to define appropriate css-classes for toggle.
      }
  }

上記のコードは、html ファイルのどこに置いても機能します。

于 2013-06-07T18:23:07.713 に答える
-1

関数の名前によって、フォーム送信時に呼び出されます。

フォームが送信され、新しいページが読み込まれたときに設定された元のフォームに戻るためです。

それを維持したい場合は、次のページの読み込み時にクラスを適用する必要があります。ほとんどの開発者はサーバーサイドでそれを行います。実際にフォームを送信したくない場合は、キャンセルしてください。

于 2013-06-07T17:49:32.693 に答える