JavaScript判斷表單元素value值是否被修改過

admin發表於2017-04-04

本章節分享一段程式碼例項,它實現了判斷表單元素的value值是否被修改的功能。

具有一定實用性,比如當表單的內容被修改的時候,這時不小心關閉了頁面,給出一個提示,詢問使用者是否儲存表單的修改,程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script>
function formIsDirty(form) {
  for (var index = 0; index < form.elements.length; index++) {
    var element = form.elements[index];
    var type = element.type;
    if (type == "checkbox" || type == "radio") {
      if (element.checked != element.defaultChecked) {
        return true;
      }
    }
    else if (type == "hidden" || type == "password" ||
             type == "text" || type == "textarea") {
      if (element.value != element.defaultValue) {
        return true;
      }
    }
    else if (type == "select-one" || type == "select-multiple") {
      for (var j = 0; j < element.options.length; j++) {
        if (element.options[j].selected !=
            element.options[j].defaultSelected) {
          return true;
        }
      }
    }
  }
  return false;
}
window.onload=function(){
  var obt=document.getElementById("bt");
  var odiv=document.getElementById("show");
  obt.onclick=function(){
    odiv.innerHTML=formIsDirty(document.myform)
  }
}
</script>
</head>
<body>
<div id="show"></div>
<form name="myform">
  <input type="text" name="username" value="softwhy.com"><br>
  <input type="text" name="address" value="青島市南區"><br>
  <select name="kecheng">
    <option value="css教程" selected="">css教程</option>
    <option value="div教程">div教程</option>
  </select>
</form>
<input type="button" id="bt" value="檢視效果"/>
</body>
</html>

上面的程式碼實現了判斷功能,下面就介紹一下它的實現過程。

程式碼註釋:

(1).function formIsDirty(form) {},引數是一個表單物件,如果改動則返回true,否則返回false。

(2).for (var index = 0; index < form.elements.length; index++) {},遍歷form下每一個表單元素。

(3).var element = form.elements[index],獲取指定索引的表單元素。

(4).var type = element.type,獲取表單元素的型別。

(5).if (type == "checkbox" || type == "radio") {

  if (element.checked != element.defaultChecked) {

    return true;

  }

}如果是核取方塊或者單選按鈕,那就判斷當前的選中情況是否和預設選中是否一致,下面的判斷原理也是如此。

相關文章