【问题标题】:How to submit a form in one tab and see results in next tab?如何在一个选项卡中提交表单并在下一个选项卡中查看结果?
【发布时间】:2017-10-31 23:53:29
【问题描述】:

页面上有三个选项卡。输入、输出和审查。 Html 表单位于输入选项卡中,用户在文本框中输入输入。我想从该输入值计算一些东西,并通过单击提交按钮将其显示在下一个选项卡 OUTPUT 中。 我已经有那个文件,它将使用该输入进行计算。

非常感谢您的回答。

    <div class="container tabs-wrap">
  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active">
      <a href="#input" aria-controls="input" role="tab" data-toggle="tab" aria-expanded="true">Input</a>
    </li>
    <li>
      <a href="#output" aria-controls="output" role="tab" data-toggle="tab" aria-expanded="false">Output</a>
    </li>
    <li>
      <a href="#review" aria-controls="review" role="tab" data-toggle="tab" aria-expanded="false">Review &amp; Email</a>
    </li>
  </ul>

<div class="tab-content">

  <div role="tabpanel" class="tab-pane active" id="input">
  <h2>Web based two tier ground mount bill of material generator</h2>
  <form class="form-horizontal" action="output.php" method="post" target="_blank">

    <div class="form-group">
      <label class="control-label col-sm-2" for="count">Module Count:</label>
      <div class="col-sm-10">          
        <input type="number" class="form-control" id="count" placeholder="Enter Number of Modules" name="count">
      </div>
    </div>
    <div class="form-group">        
      <div class="col-sm-offset-2 col-sm-10">
        <button type="submit" class="btn btn-primary continue">Continue</button>
      </div>
    </div>
  </form>

【问题讨论】:

  • 发布在 sn-p 或 jsfiddle 中的工作示例
  • 另外,你试过了吗?如果是,那么包含在问题中可能会有所帮助,以便其他人可以扩展您的解决方案或提出其他建议

标签: javascript php jquery html forms


【解决方案1】:

假设输出选项卡是另一个视图文件,您可以使用javascript的导出功能。就像根据您的需要进行输入处理,然后使用如下功能:

// file1.js
export function value() {
  return "Your output";
}

file1 是您接受输入或处理输入的地方

// output.js
import {hello} from 'file1'; // or './file1'
let val = value(); // val is Your output;

确保在输出文件中放置一个“if”,并在一定时间间隔(1 秒左右)后刷新它,以便尽快获取该值。

【讨论】:

  • NO 输出选项卡不是另一个视图文件。所有选项卡都在一个 html 文件中。我想要的是从输入选项卡中获取数字,然后对其进行一些计算,然后在输出选项卡中显示结果。对于计算,我有一个 php 文件,或者我也可以在这个文件中包含该文件。
【解决方案2】:

一种可能的方法:

onFormSubmit(calculatedValue){
  $('#output').html(calculatedValue);
}

逻辑是,当您成功提交表单时,请确保将计算的值附加到#output,或者您想要将其附加到哪个 div。

如果您使用 AJAX 与 PHP 通信,它看起来像这样:

 $.ajax({
        url: "file.php",
        type: "post",
        data: values,
        success: function (response) {
           // you will get calculated value from your php page (what you echo or print) 
          $('#output').html(response);                       
        }
       });

【讨论】:

    【解决方案3】:

    根据您的代码,您应该在一个 html 文件中包含所有三个选项卡(而不是单独的文件)。查看here 了解更多信息。

    您可以将一个函数附加到处理计算的“继续”按钮上

    $(".continue").on("click", function () {
          //Handle calculation, changing tabs and writing results here
          // do your calculations here
          $('.nav-tabs a[href="#output"]').tab('show'); // change active tab
          $( '.resultElemClass' ).text('calculationValue'); // output the result
    });
    

    【讨论】:

    • 谢谢,我明白你的建议了。所有选项卡都已在一个 html 文件中。我喜欢你在 javascript 中附加函数的想法,但想问一下这个 .resultElemClass 是什么?我想要的是从输入选项卡中获取数字,然后对其进行一些计算,然后在输出选项卡中显示结果。对于计算,我有一个 php 文件,或者我也可以在这个文件中包含该文件。
    • 嗨@veenu - .resultElemClass 只是一个示例元素,您可以将结果注入其中。例如,您使用“resultElemClass”类创建一个跨度,然后使用 jQuery 在其中注入结果(取决于您希望如何输出结果。这是否清楚?
    【解决方案4】:

    试试这个,

    $(function() {
      $('#btnSubmit').on('click', function() {
        // your code goes here
        $('#outputSpan').text($('#count').val());
        // not triiger output tab to be open
        $('[href="#output"]').trigger('click');
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    
    <div class="container tabs-wrap">
      <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" class="active">
          <a href="#input" aria-controls="input" role="tab" data-toggle="tab" aria-expanded="true">Input</a>
        </li>
        <li>
          <a href="#output" aria-controls="output" role="tab" data-toggle="tab" aria-expanded="false">Output</a>
        </li>
        <li>
          <a href="#review" aria-controls="review" role="tab" data-toggle="tab" aria-expanded="false">Review &amp; Email</a>
        </li>
      </ul>
    
      <div class="tab-content">
    
        <div role="tabpanel" class="tab-pane active" id="input">
          <h2>Web based two tier ground mount bill of material generator</h2>
          <form class="form-horizontal" action="output.php" method="post" target="_blank">
    
            <div class="form-group">
              <label class="control-label col-sm-2" for="count">Module Count:</label>
              <div class="col-sm-10">
                <input type="number" class="form-control" id="count" placeholder="Enter Number of Modules" name="count">
              </div>
            </div>
            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" id="btnSubmit" class="btn btn-primary continue">Continue</button>
              </div>
            </div>
          </form>
        </div>
        
        <div role="tabpanel" class="tab-pane" id="output">
          <h2>Output</h2>
          <span id="outputSpan"></span>
        </div>
      </div>
    </div>

    【讨论】:

    • 谢谢 Rohan,你明白了我想要解释的内容。好的,现在输出选项卡正在显示我们在输入选项卡中输入的数字。我想要的是从输入选项卡中获取数字,然后对其进行一些计算,然后在输出选项卡中显示结果。
    • @veenu 没有人能理解你的用它做一些计算,我已经给出了解决方案以及如何满足你的要求。因此,对输入字段值进行计算并将其显示在输出元素中。
    • 对不起,rohan 让这个模棱两可,我是 javascript 和 php 的新手。我试图做的是得到那个数字,让我们说给它加 15,显示在输出选项卡中。
    • 你可以试试$('#outputSpan').text(parseInt($('#count').val())+15);
    • 这行得通,但该计算只是示例。实际上,我只想用那个值做一堆计算。所以我为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2012-04-26
    相关资源
    最近更新 更多