我有一个使用带有提交按钮的下拉菜单的现有表单,它运行良好。
我想为表单外的选定类别链接或图像添加直接链接-我如何实现这一点?
我在下面的尝试不起作用
欢迎提出任何建议!
<form method="post" action="page.php?cat" id="searchcat">
<select name="Categories">
<option selected>Browse...</option>
<option value="j001">Option 1</option>
<option value="j002">Option 2</option>
<option value="j003">3</option>
<option value="j004">4</option>
...
</select>
</form>
<a onclick="SelectItemByValue(document.getElementById('searchcat'), j004);">
Click here to submit option#4
</a>
<script>
function SelectItemByValue(element, value) {
if (value !== undefined && value !== null) {
var length = element.options.length;
for (var i = 0; i < length; i++) {
if (element.options[i].value === value) {
element.selectedIndex = i;
return;
}
}
}
}
</script>
直接来看一下html和javascript:中带有changed
的行
<form method="post" action="page.php?cat" id="searchcat">
<select name="Categories" id='cats'> <!-- changed -->
<option selected>Browse...</option>
<option value="j001">Option 1</option>
<option value="j002">Option 2</option>
<option value="j003">3</option>
<option value="j004">4</option>
...
</select>
</form>
<a onclick="SelectItemByValue(document.getElementById('searchcat'), 'j004');"> <!-- changed -->
Click here to submit option#4
</a>
<script>
function SelectItemByValue(form, value) { // changed
var sel = form.elements.namedItem('cats'); // changed
if (value !== undefined && value !== null) {
var length = sel.options.length; // changed
for (var i = 0; i < length; i++) {
if (sel.options[i].value === value) { // changed
sel.selectedIndex = i;
form.submit(); // changed
return;
}
}
}
}
</script>
您的代码出现了一些问题,例如:
- 您在
j004
上缺少'
,因此:'j004'
- 您的元素变量没有引用
<select>
元素;以及 - 您错过了提交表格的实际电话
你提到你有一个按钮,就像这样:
<input id="search2" type="submit" name="submit" value="Search">
但在我的测试中,将按钮命名为submit
会导致脚本停止工作。这个代码对我有效:
<button name='sent'>Search</button>
但如果您使用按钮,请注意:如果表单是通过锚发送的,则不会有sent
来检查isset
。。。