2013-10-25 47 views
1

我對java和javascript有點新鮮。我想知道如何循環下面的腳本,以便我不需要創建如此多的代碼行。該腳本用於禁用字段並僅在用戶選中該複選框時啓用它們。在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_form1.r_!form1.chkChange.checked;是固定的,重複的。

你能告訴我如何將這段代碼轉換成循環風格,以提高效率嗎?

+1

的JavaScript不是Java – gefei

回答

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; 
     } 
    } 
} 
+0

所有字段或者是文本框或文本區域,而不是複選框。只有一個複選框可以啓用和禁用編輯。 –

+0

@ user1571494:好的,我已根據您的評論簡化了我的代碼... –

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; 

     } 
    } 

} 
+0

我認爲這會起作用。一個小問題。是否有隻讀屬性?原因如果我使用禁用的屬性數據沒有被保存到我的數據庫。 –

+0

@ user1571494即使它被禁用,它可以有值分配的JavaScript,並且它被髮送到服務器它將修改您的分區 – Shadow

+0

這怎麼可能。你能建議嗎? –

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>