单击“链接”选择值并提交表单


Clicking Link to choose value and submit form

我有一个使用带有提交按钮的下拉菜单的现有表单,它运行良好。

我想为表单外的选定类别链接或图像添加直接链接-我如何实现这一点?

我在下面的尝试不起作用
欢迎提出任何建议!

<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。。。