一个表单可以有两个提交按钮吗?

3
我正在使用web2py编写一个类似于搜索引擎的应用程序。是否可以实现一个表单中的两个提交按钮,例如谷歌有两个按钮“搜索”和“I'm feeling lucky”。提前感谢您的帮助。

1
我不知道这是否有帮助,但在PHP中,您可以通过检查$_POST数组是否包含以按下按钮的名称命名的键来找到已按下哪个按钮(在多按钮表单中)。在webpy中是否有类似于$_POST数组的东西? - Nadir Sampaoli
非常小心MS Internet Explorer——一些旧版本会发送所有提交按钮的值,而不是被点击的那个。 - detly
2
@detly 对于任何网络开发人员来说,对IE保持警惕是一种默认状态。你大约花费了25%的时间设计网站,然后又花费了75%的时间让它在IE中正常工作。 - Gareth Latty
@Lattyware - 哈哈,确实 :) 但在这种情况下,我碰巧知道一个需要注意的特定怪癖,所以这是一种稍微更精确的偏执。 - detly
3个回答

5

类似这样的:

def search():
    form = FORM(INPUT(_type='text', _name='keywords'),
        INPUT(_type='submit', _value='Search'),
        INPUT(_type='submit', _value="I'm feeling lucky", _name='lucky'),
        _method='get')
    if request.vars.keywords:
        if request.vars.lucky:
            [code to return "I'm feeling lucky" results]
        else:
            [code to return regular results]
    return dict(form=form)

给“我感觉很幸运”提交按钮命名会使其值随表单一起提交,因此您可以在提交的变量中检查其是否存在,并在这种情况下有条件地返回不同的响应。
请注意,FORM()助手默认使用post方法,但由于这是一个搜索表单,因此上述代码使用get方法。
您还可以在视图中手动构建表单,而不是使用FORM()助手。

0

0

如果传入请求中包含按下按钮的名称,则可以实现。


3
这是一个糟糕的答案。怎么可能呢? - Gareth Latty
在传入的请求中,您有按下按钮的名称。 - Denis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接