【问题标题】:Submitting form depend of color clicked提交表单取决于点击的颜色
【发布时间】:2017-01-04 00:24:56
【问题描述】:

我的表单可以通知用户在我的网站上出现错误、警告或新内容。我在ann-right 类上有三个按钮,每个按钮都有它的颜色。当我单击按钮时,单击了更改为颜色的类ann-left 上的按钮输入。我想问的是,如何根据所选颜色提交表单。红色为“错误公告”,绿色为“警告公告”,蓝色为“新公告”。 Red = #D91E18 Green = #3FC380 Blue = #5BBBFF

  <div class="ann-left">
  <form method="post" id="ann">
     <input id="announce-text" type="text" name="" placeholder="What's new?"></input>
     <input id="submit-post" type="button" name="" onsubmit="submitform();" value="Post"></input>
  </form>
  </div>
  <div class="ann-right">
   <button id="red" onclick="color1()" class="tooltip color" title="Error!"></button>
   <button id="green" onclick="color2()" class="tooltip color"title="Warning!" ></button>
   <button id="blue" onclick="color3()" class="tooltip color" title="New!"></button>
  </div>

<script>  
function color1() {
  document.getElementById("submit-post").style.backgroundColor = "#D91E18";
  sessionStorage.setItem('col1', "#D91E18");
}
function color2() {
  document.getElementById("submit-post").style.backgroundColor = "#3FC380";
  sessionStorage.setItem('col2', "#3FC380");
}
function color3() {
  document.getElementById("submit-post").style.backgroundColor = "#5BBBFF";
  sessionStorage.setItem('col3', "#5BBBFF");
}

color1(sessionStorage.getItem('col1'));
color2(sessionStorage.getItem('col2'));
color3(sessionStorage.getItem('col3'));

function submitform() {
}
</script>

【问题讨论】:

  • 和php有什么关系?如果它不相关,你应该删除它的标签。
  • 有什么问题?
  • 您是否尝试过为每个函数添加“提交”或将隐藏字段的值设置为您想要的任何值?
  • “我如何根据所选颜色提交表单” - 哦,我知道这可能与 php 相关。您想将这些传递给php,对吗?如果是这样,那么这个问题既不清楚又过于宽泛。
  • 如果我理解了这个问题,您想根据所选颜色提交到不同的页面吗?如果是这样,您可以在颜色选择上使用 javascript 更改表单的操作

标签: javascript php html form-submit


【解决方案1】:

您可以使用一个隐藏的输入将通知类型传递给您的表单。 然后你就正常提交了。

  <div class="ann-left">
  <form method="post" action="announcement_post.php" id="ann">
     <input type="text" name="announcement_description" id="announce-text"  placeholder="What's new?">
     <input type="hidden" name="announcement_type" id="announcement_type">
     <input id="submit-post" type="submit" name="" value="Post">
  </form>
  </div>
  <div class="ann-right">
   <button id="red" onclick="color1()" class="tooltip color" title="Error!">&nbsp;</button>
   <button id="green" onclick="color2()" class="tooltip color"title="Warning!" >&nbsp;</button>
   <button id="blue" onclick="color3()" class="tooltip color" title="New!">&nbsp;</button>
  </div>

<script>  
function color1() {
  document.getElementById("submit-post").style.backgroundColor = "#D91E18";
   document.getElementById("announcement_type").value="Error announcement";
  sessionStorage.setItem('col1', "#D91E18");
}
function color2() {
  document.getElementById("submit-post").style.backgroundColor = "#3FC380";
   document.getElementById("announcement_type").value="Warning announcement";  
  sessionStorage.setItem('col2', "#3FC380");
}
function color3() {
  document.getElementById("submit-post").style.backgroundColor = "#5BBBFF";
   document.getElementById("announcement_type").value="New announcement";   
  sessionStorage.setItem('col3', "#5BBBFF");
}

color1(sessionStorage.getItem('col1'));
color2(sessionStorage.getItem('col2'));
color3(sessionStorage.getItem('col3'));

</script>

announcement_post.php:

<?php

if(!isset($_POST["announcement_type"])) die("Post was not sent.");

echo $_POST["announcement_type"];
echo '<br>';
echo $_POST["announcement_description"];

【讨论】:

    【解决方案2】:

    这里有几个问题。首先你不是在练习 DRY(Dont Repeat Yourself),这在创建函数时非常重要。创建一个函数来处理您的 setColor 函数并在实际单击的按钮上发送选定的颜色。完成后,您可以专注于“提交表单”。当您提交表单时,它通常希望您有一个类型为submit 的按钮。由于您没有,它不会提交表单。我要做的是将您的onsubmit() 放在表单元素上:

    <div class="ann-left">
        <form method="post" id="ann" onsubmit="return submitform(this);">
            <input id="hidden-input" type="hidden" name="color_selected" value="">
            <input id="announce-text" type="text" name="" placeholder="What's new?">
            <input id="submit-post" type="submit" name=""  value="Post">
        </form>
    </div>
    <div class="ann-right">
        <button id="red" onclick="setColor('#D91E18')" class="tooltip color" title="Error!"></button>
        <button id="green" onclick="setColor('#3FC380')" class="tooltip color"title="Warning!" ></button>
        <button id="blue" onclick="setColor('#5BBBFF')" class="tooltip color" title="New!"></button>
    </div>
    
    <script>
        var $btn = document.getElementById("submit-post");
        var $hidden = document.getElementById("hidden-input");
    
        function setColor(color) {
            $btn.style.backgroundColor = color;
            $hidden.value = color;
        }
    
        function submitform(form) {
            alert(form.color_selected.value);
            return false;
        }
    </script>
    

    【讨论】:

    • 我觉得问题远不止于此。很确定他们想要获取选定的值并将其传递给 PHP 处理程序。
    • 我正在练习 DRY,我正在使用这个 function color1(col) { document.getElementById("submit-post").style.backgroundColor = col; sessionStorage.setItem('col1', col); } color1(sessionStorage.getItem('col1')); 但是,如何实现你所做的非常困难......顺便说一句谢谢!它解决了我的问题:D
    • 我不明白使用javascript设置颜色值的意义,最简单的解决方案似乎是单选按钮
    • cool.. 猜你仍然需要 JS 来更改提交 btn 颜色。
    • 关注@AntonioAlexandreAlonsodeSi 对 PHP 方面的回答。
    【解决方案3】:

    function color1() {
      document.getElementById("submit-post").style.backgroundColor = "#D91E18";
      sessionStorage.setItem('col1', "#D91E18");
      document.getElementById("hidden_field").value = 'error';
      submitform();
    }
    
    function color2() {
      document.getElementById("submit-post").style.backgroundColor = "#3FC380";
      sessionStorage.setItem('col2', "#3FC380");
      document.getElementById("hidden_field").value = 'warning';
      submitform();
    }
    
    function color3() {
      document.getElementById("submit-post").style.backgroundColor = "#5BBBFF";
      sessionStorage.setItem('col3', "#5BBBFF");
      document.getElementById("hidden_field").value = 'new';
      submitform();
    }
    
    color1(sessionStorage.getItem('col1'));
    color2(sessionStorage.getItem('col2'));
    color3(sessionStorage.getItem('col3'));
    
    function submitform() {
      var form = document.getElementById("ann");
      var data = new FormData(form);
      console.log(data);
      //var req = new XMLHttpRequest();
      //eq.send(data);
      form.submit();
    
    }
    #red {
      background: #D91E18;
    }
    #green {
      background: #3fc380;
    }
    #blue {
      background: #5bbbff;
    }
    <form method="post" id="ann">
      <div class="ann-left">
    
        <input id="announce-text" type="text" name="" placeholder="What's new?" />
        <input id="submit-post" type="button" name="" onsubmit="submitform();" value="Post" />
        <input type="hidden" id="hidden_field" />
      </div>
      <div class="ann-right">
        <button id="red" onclick="color1()" class="tooltip color" title="Error!"></button>
        <button id="green" onclick="color2()" class="tooltip color" title="Warning!"></button>
        <button id="blue" onclick="color3()" class="tooltip color" title="New!"></button>
      </div>
    </form>

    【讨论】:

    • 感谢您的帮助先生 :)
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2015-02-03
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多