如何使 HTML 表单具有交互性
How to make a HTML Form interactive?
所以我正在尝试用交互式HTML表单制作一个网站。但我似乎无法让它工作。我所说的互动是指例如:如果我在以下两者之间有饮料选择:可乐芬达精灵百事可乐
当我选择百事可乐时,我希望它显示另一个HTML表单,让我选择与我选择的第一件事相关的内容。例如,如果我选择百事可乐,它会向我显示以下内容:
百事可乐百事橙百事香蕉
然后当我选择其中一个时,它向我显示另一个 HTML 表单,让我选择与我的第一个和第二个选择相关的另一个东西。例如:如果我选择百事可乐,那么百事可乐橙会让我在以下两者之间进行选择:
2000年20132020
年到目前为止,我已经尝试过脚本(使用Javascript)
这是我尝试过的:
<!DOCTYPE html>
<html>
<body>
<form>
<select name="drink">
<option value="cola">Cola</option>
<option value="fanta">Fanta</option>
<option value="sprite">Sprite</option>
<option value="pepsi">Pepsi</option>
</select>
<br><br>
<input type="submit">
</form>
<script>
if (drink=pepsi) {
<html>
<form>
<select name="variant">
<option value="pcola">Pepsi Cola</option>
<option value="orange">Pepsi Orange</option>
<option value="banana">Pepsi Banana</option>
</select>
<br><br>
<input type="submit">
</form>
</html>
}
</script>
<script>
if (variant=orange) {
<html>
<form>
<select name="year">
<option value="2000">2000</option>
<option value="2013">2013</option>
<option value="2020">2020</option>
</select>
<br><br>
<input type="submit">
</form>
</html>
}
</script>
</body>
</html>
对于您所描述的交互性级别,您不需要javascript
。
您只需使用2行css
即可实现您所描述的内容:
li ul {display:none;}
li input:checked + ul {display:block;}
例:
li ul {display:none;}
li input:checked + ul {display:block;}
<form>
<ul>
<li><input type="radio" name="drink" value="Cola" />Cola</li>
<li><input type="radio" name="drink" value="Fanta" />Fanta</li>
<li><input type="radio" name="drink" value="Sprite" />Sprite</li>
<li><input type="radio" name="drink" value="Pepsi" />Pepsi
<ul>
<li><input type="radio" name="flavour" value="pepsiCola" />Pepsi Cola</li>
<li><input type="radio" name="flavour" value="pepsiOrange" />Pepsi Orange
<ul>
<li><input type="radio" name="date" value="2000" />2000</li>
<li><input type="radio" name="date" value="2013" />2013</li>
<li><input type="radio" name="date" value="2020" />2020</li>
</ul>
</li>
<li><input type="radio" name="flavour" value="pepsiBanana" />Pepsi Banana</li>
</ul>
</li>
</ul>
</form>
学习一些关于JS方法的知识: getElementById
, getElementsByTagName
, ...
例如:
if (document.getElementById('value') == 'cola')
。返回您选择的值,接下来使用它来更改表单的内容。
使用 '=' 赋值,但在 if 构造中使用 '==' 赋值。
尝试使用type
设置为 text/html
的 script
元素来存储form
html
字符串,将.onchange
和.onsubmit
事件附加到document
以处理动态内容;使用 .innerHTML
将script
元素内容追加到document.body
;调整if
的条件以使用严格相等===
运算符;将以前的form
select
和input type="submit"
元素disabled
属性设置为true
<!DOCTYPE html>
<html>
<head>
<script type="text/html" id="pepsi">
<form name="variant">
<select name="variant">
<option value="pcola">Pepsi Cola</option>
<option value="orange">Pepsi Orange</option>
<option value="banana">Pepsi Banana</option>
</select>
<br>
<br>
<input type="submit" disabled>
</form>
</script>
<script type="text/html" id="orange">
<form name="year">
<select name="year">
<option value="2000">2000</option>
<option value="2013">2013</option>
<option value="2020">2020</option>
</select>
<br>
<br>
<input type="submit" disabled>
</form>
</script>
</head>
<body>
<form name="initial">
<select name="drink">
<option value="cola">Cola</option>
<option value="fanta">Fanta</option>
<option value="sprite">Sprite</option>
<option value="pepsi">Pepsi</option>
</select>
<br>
<br>
<input type="submit" disabled>
</form>
<script>
document.onchange = function(event) {
event.target.parentElement
.querySelector("input")
.removeAttribute("disabled")
}
document.onsubmit = function(event) {
event.preventDefault();
event.stopPropagation();
var drink = event.target.querySelector("select").value;
if (drink === "pepsi" || drink === "orange") {
document.body.innerHTML += "<br>"
+ document.getElementById(drink).innerHTML;
}
for (var i = 0; i < document.forms.length -1; i++) {
var form = document.forms[i];
form.querySelector("select").setAttribute("disabled", true)
form.querySelector("input").setAttribute("disabled", true)
}
}
</script>
</body>
</html>
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Ajax发布表单序列化,发布引号'
- 多级HTML表单
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在验证和发送邮件后更改联系人表单的 html
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- Javascript更新孙窗口中的表单元素
- 解析javascript表单验证器
- 阻止表单元素提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使 HTML 表单具有交互性