1

我对java和javascript有点陌生。我想知道如何循环以下脚本,这样我就不需要创建这么多行代码。此脚本用于禁用字段并仅在用户选中复选框时启用它们。

<script>
 function start() {
  form1.s_Name.disabled = true;
  form1.r_Name.disabled = true;
  form1.s_Address.disabled = true;
  form1.r_Address.disabled = true;
  form1.s_Postal.disabled = true;
  form1.r_Postal.disabled = true;
  form1.s_City.disabled = true;
  form1.r_City.disabled = true;
  form1.s_Email.disabled = true;
  form1.r_Email.disabled = true;
  form1.s_Phone.disabled = true;
  form1.r_Phone.disabled = true;
}

onload = start;
function chgtx() {
 form1.s_Name.disabled = !form1.chkChange.checked;
 form1.r_Name.disabled =!form1.chkChange.checked;
 form1.s_Address.disabled = !form1.chkChange.checked;
 form1.r_Address.disabled = !form1.chkChange.checked;
 form1.s_Postal.disabled = !form1.chkChange.checked;
 form1.r_Postal.disabled = !form1.chkChange.checked;
 form1.s_City.disabled = !form1.chkChange.checked;
 form1.r_City.disabled = !form1.chkChange.checked;
 form1.s_Email.disabled = !form1.chkChange.checked;
 form1.r_Email.disabled = !form1.chkChange.checked;
 form1.s_Phone.disabled = !form1.chkChange.checked;
 form1.r_Phone.disabled = !form1.chkChange.checked;
 }

我认为从代码中你可以看到只有form1.s_and是固定的和重复的form1.r_!form1.chkChange.checked;

您能否告诉我如何将这段代码转换为循环样式以提高效率?

4

3 回答 3

2

您可以像这样遍历您的字段:

var inputFields = form1.getElementsByTagName("input"),
    nbIF = inputFields.length;

for(var iIF = 0; iIF < nbIF; iIF++) {
    if(inputFields[iIF].name.substring(0, 2) === "s_" ||
       inputFields[iIF].name.substring(0, 2) === "r_")
        inputFields[iIF].disabled = true;
    }
}

其他功能也一样...

function chgtx() {
    for(var iIF = 0; iIF < nbIF; iIF++) {
        if(inputFields[iIF].name.substring(0, 2) === "s_" ||
           inputFields[iIF].name.substring(0, 2) === "r_")
            inputFields[iIF].disabled = !form1.chkChange.checked;
        }
    }
}
于 2013-10-25T07:38:15.607 回答
0

如果您尝试仅启用/禁用某些字段,但不是全部,您可以使用这样的数组:

<script>
var fieldsToToggle = ["Name", "Address", "Postal"]

function setDisabledStatus(fields, mode) {
  var i;
  var l = fields.length;
  var fieldRoot;
  var form = document.getElementById('myform');

  for (i = 0; i < l; i++) {
    fieldRoot = fields[i];
    form["s_" + fieldRoot].disabled = mode;
    form["r_" + fieldRoot].disabled = mode;
  }
}

setDisabledStatus(fieldsToToggle, true);
</script>
于 2013-10-25T07:49:39.423 回答
0

你可以试试这个,它会禁用除复选框之外的所有表单元素

Javascript

function validate()
{
    var dis = document.getElementById('myform');
    var ele = dis.getElementsByTagName("input");
    for(var i=0;i<ele.length;i++)
    {
         if(ele[i].getAttribute("type") != "checkbox")
         {
                 ele[i].disabled = true;

         }
    }

}
于 2013-10-25T07:39:42.067 回答