我从jsfiddle分叉了一些代码,当我将它放入html doc时,它无法正常工作。但在小提琴中工作得很好。有些东西告诉我,我错过了一个图书馆,但不知道应该使用哪一个。
如果它实际工作应该发生的是一个或两个文本框应该被禁用,然后如果选择了另一个单选按钮则启用。
可以在这里找到小提琴:http://jsfiddle.net/t5xKW/3/
任何帮助都将不胜感激。
<html>
<head>
<title> text conversion</title>
<script language="JavaScript">
var rbProject = document.getElementById('radio1-1');
var rbAccount = document.getElementById('radio1-2');
var txtRef = document.getElementById('txtRef');
var txtTitle = document.getElementById('txtTitle');
var txtName = document.getElementById('txtName');
rbProject.addEventListener('change', function (e) {
txtRef.disabled = false;
txtTitle.disabled = false;
txtName.disabled = true;
})
rbAccount.addEventListener('change', function (e) {
txtRef.disabled = true;
txtTitle.disabled = true;
txtName.disabled = false;
})
</script>
<style>
#container {
width:700px;
border-style:solid;
border-width:2px;
}
.table {
display:table;
width: 650px;
border-style:solid;
border-width:1px;
}
.tr {
display:table-row;
height:28px;
}
.td {
display:table-cell;
}
.td1 {
width:200px;
}
.td2 {
width:130px;
}
.td3 {
width:400px;
}
</style>
</head>
<body>
<div class="table">
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-1" value="radio" />
<label class="large black" for="radio1-1">Project</label>
</div>
<div class="td td2"> <span class="large black">Ref:</span>
</div>
<div class="td td3">
<input id="txtRef" class="form-textbox" name="ref" type="text" placeholder="Insert project reference" />
</div>
</div>
<div class="tr">
<div class="td td1"></div>
<div class="td td2"> <span class="large black">Title:</span>
</div>
<div class="td td3">
<input id="txtTitle" class="form-textbox" name="title" type="text" placeholder="Insert project title" />
</div>
</div>
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-2" value="radio" />
<label class="large black" for="radio1-2">Account</label>
</div>
<div class="td td2"> <span class="large black">Name:</span>
</div>
<div class="td td3">
<input id="txtName" class="form-textbox" name="name" type="text" placeholder="Insert account name" />
</div>
</div>
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-3" value="radio" />
<label class="large black" for="radio1-3">General Business</label>
</div>
<div class="td td2"></div>
<div class="td td3">
<input class="form-textbox" name="organization" type="text" placeholder="Insert client organisation name" />
</div>
</div>
</div>
</body>
</html>
答案 0 :(得分:3)
在执行javascript之前,HTML没有呈现。
在关闭body标签(</body>
)之前放置脚本:
<html>
<head>
<title> text conversion</title>
<style>
#container {
width:700px;
border-style:solid;
border-width:2px;
}
.table {
display:table;
width: 650px;
border-style:solid;
border-width:1px;
}
.tr {
display:table-row;
height:28px;
}
.td {
display:table-cell;
}
.td1 {
width:200px;
}
.td2 {
width:130px;
}
.td3 {
width:400px;
}
</style>
</head>
<body>
<div class="table">
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-1" value="radio" />
<label class="large black" for="radio1-1">Project</label>
</div>
<div class="td td2"> <span class="large black">Ref:</span>
</div>
<div class="td td3">
<input id="txtRef" class="form-textbox" name="ref" type="text" placeholder="Insert project reference" />
</div>
</div>
<div class="tr">
<div class="td td1"></div>
<div class="td td2"> <span class="large black">Title:</span>
</div>
<div class="td td3">
<input id="txtTitle" class="form-textbox" name="title" type="text" placeholder="Insert project title" />
</div>
</div>
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-2" value="radio" />
<label class="large black" for="radio1-2">Account</label>
</div>
<div class="td td2"> <span class="large black">Name:</span>
</div>
<div class="td td3">
<input id="txtName" class="form-textbox" name="name" type="text" placeholder="Insert account name" />
</div>
</div>
<div class="tr">
<div class="td td1">
<input type="radio" name="section1a" id="radio1-3" value="radio" />
<label class="large black" for="radio1-3">General Business</label>
</div>
<div class="td td2"></div>
<div class="td td3">
<input class="form-textbox" name="organization" type="text" placeholder="Insert client organisation name" />
</div>
</div>
</div>
<script>
var rbProject = document.getElementById('radio1-1');
var rbAccount = document.getElementById('radio1-2');
var txtRef = document.getElementById('txtRef');
var txtTitle = document.getElementById('txtTitle');
var txtName = document.getElementById('txtName');
rbProject.addEventListener('change', function (e) {
txtRef.disabled = false;
txtTitle.disabled = false;
txtName.disabled = true;
})
rbAccount.addEventListener('change', function (e) {
txtRef.disabled = true;
txtTitle.disabled = true;
txtName.disabled = false;
})
</script>
</body>
</html>
答案 1 :(得分:1)
好的,我明白了;) 在jsfiddle中,边栏中有“onload”选项,导致代码在页面加载完成后执行。在您的代码中,您有不同的选择来实现这一目标。 您可以将代码放在HTML文档的末尾(在正文之后)或(这是我最喜欢的方法)将代码包装在函数中
function init() {
//your JS code from above
}
使用
将这些添加到body标签中的onload侦听器<body onload="init();">
我认为这应该有效,祝你好运:)。