0

当事件发生时,我使用此代码更改classhtml 元素的。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 回答