【问题标题】:jQuery elements not getting passed to perl cgijQuery 元素没有被传递给 perl cgi
【发布时间】:2014-02-14 16:01:40
【问题描述】:

我有一个 html pg,它有两种形式,并在提交时调用 perl 脚本。但是在脚本中 cgi 参数没有得到任何值。

HTML代码--

<fieldset class="col_4" name="BetweenRange"> <legend>Range Comparison</legend> 
<form action="call_range.pl" method="post" id="range1" target="Range1">
 <table width="100%" border="1">
  <tr>
    <td><input name="r1_1stdate" type="text"  id="from1" required/><input name="r1_2nddate" type="text"  id="to1" required/></td> 
</form>
<form action="call_range.pl" method="post" id="range2" target="Range2">    
    <td><input name="r2_1stdate" type="text" id="from2" required/><input name="r2_2nddate" type="text"  id="to2" required/></td>
  </tr></form>
  <tr>
  <td><iframe id="I3" align="left" name="Range1"  >Your browser does not support inline frames or is currently configured not to display inline frames.
</iframe></td>
   <td><iframe id="I4" align="left" name="Range2" >Your browser does not support inline frames or is currently configured not to display inline frames.
</iframe></td> 
  </tr>
</table>
</fieldset>

脚本放在这里 --

$(function() {
    $( "#from1" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      changeYear: true,  
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
    $( "#to1" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to1" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      changeYear: true,  
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
    $( "#from1" ).datepicker( "option", "maxDate", selectedDate );
      }
    }); 
     <!-- RangeComparison form submit , getting called after selecting 2nd date-->
     $("#to1").change(function() { this.form.submit(); });  });



  $(function() {
    $( "#from2" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      changeYear: true,  
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
    $( "#to2" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to2" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      changeYear: true,  
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
    $( "#from2" ).datepicker( "option", "maxDate", selectedDate ); 
      }
    });
     <!-- RangeComparison form submit , getting called after selecting 2nd date-->
     $("#to2").change(function() {
     this.form.submit(); });
  });

Perl 代码 -- 使用严格; 使用 CGI;

my $query = CGI->new;
print $query->header;

my $from1 = $query->param('from1'); 
my $to1 = $query->param('to1');

print "</br>Value passed for form1 $from1</br>$to1";
print $query->end_html;

这是哪里出错了?如果有人可以提供帮助,我将不胜感激。

链接到 JSFiddle http://jsfiddle.net/jDd5U/

【问题讨论】:

    标签: javascript jquery html perl cgi


    【解决方案1】:
    1. 您的 HTML 严重无效。您有不允许使用表格的表格。浏览器错误恢复可能会在尝试生成有效 DOM 时破坏它们。使用a validator
    2. 表单控件的name 用作提交数据的键。您正在尝试通过未提交的id 进行查找。

    【讨论】:

    • 1.我已将它放在桌子内以使其正确对齐。我进行了验证,并知道需要进行很多更改。 2. 你在说这个吗? $("#to1").change(function() { this.form.submit(); }); }); 我对 UI 设计完全陌生。
    • 1. Don't use tables for layout。 2.编号&lt;input name="r1_1stdate"$query-&gt;param('from1')
    • 感谢指正。我已经更改了 perl 代码以获取元素名称并且它起作用了。
    猜你喜欢
    • 2017-02-19
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2011-07-15
    • 2010-12-02
    • 2020-01-29
    • 2013-03-24
    相关资源
    最近更新 更多