簡體   English   中英

如何啟用/禁用單選按鈕交互的文本字段?

[英]How to enable/disable text field on radio button interaction?

無法使其正常工作。 第一次使用傳遞給函數的變量。 取消選中單選按鈕應禁用表單字段,反之亦然。 lineid 變量將此單選/文本輸入對與其他 10 個輸入對區分開來。

我的代碼:

<script type="text/javascript">
function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid.disabled = false;
} else { 
document.dupedit.lineid.disabled = true;
} 
}
</script>

我的 HTML 的子集。

您需要將一個字符串傳遞到您的disablefield ,因此在傳遞時將值放在引號中。類似於:

<input onclick="disablefield('2671997')" />

這是因為document.getElementById需要一個字符串,而不是 integer。

其次,要啟用/禁用該字段,您需要使用disabled = true; 而不是= 'disabled'

document.dupedit.lineid正在查找名稱為“lineid”的字段,該字段在您的表單中不存在。 我建議給該字段一個id並再次使用document.getElementById

如果要繼續使用name屬性,則必須改用document.getElementsByName 這將返回一個匹配元素的數組(因為多個元素可以共享相同的名稱),但是如果在您的代碼中您知道所討論的元素是唯一具有該名稱的元素,您可以這樣做:

document.getElementsByName(lineid)[0].disabled = true;

你可以在這里看到一個工作版本(我認為這就是你想要的)。 是使用getElementsByName的版本。

您在 function 上缺少右括號:

function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid='enabled';
}else{ 
document.dupedit.lineid='disabled';
} 
} //<-- here

另外,我可以建議您將this傳遞給 function。 然后你不必調用getElementById

<input onclick='disablefield(this)' type.....

function disablefield(obj){ 
    if (obj.checked == true){ 
        document.dupedit.lineid='enabled';
    }else{ 
        document.dupedit.lineid='disabled';
    } 
} 

我認為您需要重新考慮代碼。

  • 不要在復選框上使用 ID。 最好將該 ID 移動到您要禁用/啟用的文本字段並檢查該字段是否已禁用/啟用,而不是復選框本身

  • 使用更清潔的 JS。

請看一下我為你編譯的 jsFiddle 它符合你的預期嗎,丹?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM