【问题标题】:Post form with return key does not post the submit button name使用返回键发布表单不发布提交按钮名称
【发布时间】:2017-06-23 10:36:31
【问题描述】:

我在同一页面上有多个表单。每个表单作为提交按钮,如下所示:

<button type="submit" name="button_name" style="display:none;" class="btn btn-primary btn-striped" disabled="disabled"><span class="glyphicon glyphicon-floppy-saved"></span><span class="button-text"> {% trans "Save" %}</span></button>

当我点击保存按钮时,一切正常,我可以在视图中区分发布的表单是这样的:

 if request.method == 'POST':
        if 'button_name' in request.POST:
            [...]
        elif 'button_name_2' in request.POST:
            [...]

但是,如果我在填写完文本字段后按回车键,则会发布表单,但我在 request.POST 字典中没有按钮名称。我在页面上唯一的按钮是提交按钮,它们都有type="submit" name="button_name"

【问题讨论】:

    标签: html django forms


    【解决方案1】:

    你为什么不尝试这样的事情......

    if request.method == 'POST':
        #get the button name or None
        button_name = request.POST.get("button_name",None)
        button_name2 = request.POST.get("button_name2",None)
        #if you found button_name do something
        if button_name:
            [...]
        #else if you found button_name2 do something else
        elif button_name2:
            [...]
    

    【讨论】:

      【解决方案2】:

      仅当按钮用于提交表单时,按钮名称才会包含在表单数据中。如果您使用return提交表单,则不会包含按钮名称。

      如果您希望区分不同的表单,则可以为每个表单添加隐藏输入。

      <form>
          ...
          <input name='form1' type='hidden' />
      </form>
      
      <form>
          ...
          <input name='form2' type='hidden' />
      </form>
      

      然后在您的视图中您可以检查隐藏的输入。

      if request.method == 'POST':
          if 'form1' in request.POST:
              ...
          elif 'form2' in request.POST:
              ...
      

      【讨论】:

      • 是的,这就是我的想法。我希望有一种我不知道的性感方式来发布带有返回键的提交按钮名称。那我就这么做,谢谢。
      猜你喜欢
      • 2014-10-28
      • 2017-08-06
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多