【问题标题】:HTML select POSTing text instead of value for <option> selectedHTML 选择 POSTing text 而不是 <option> 选择的值
【发布时间】:2015-03-06 23:26:41
【问题描述】:

由于某种原因,我通过 POST 提交的表单发送的是选项文本,而不是表单的选项值。这是我的选择声明:

<select name = "newfreq">
     <option val='1'>every week</option>
     <option val='2'>every 2 weeks</option>
</select>

当我在 PHP 中打印出我的 $_POST 数组时。我有:

 [newfreq] => every 2 weeks

我对 jquery 尤其陌生,我用它来模态显示表单,所以我将完整的表单/div 和 javascript 粘贴在下面以防万一:

  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.3/jquery-ui.js"></script>


  <script>
  $(function() {
    var dialog, form,



    dialog = $( "#dialog-form" ).dialog({
      autoOpen: false,
      height: 300,
      width: 350,
      modal: true,

    });

     form = dialog.find( "form" ).on( "submit", function( event ) {
     // event.preventDefault();

    });

    $( "#create-user" ).button().on( "click", function() {
      dialog.dialog( "open" );
    });
  });
  </script>


<input id = "create-user" type="submit" tabindex="-1" value = "Change deal" >

<div id="dialog-form" >


  <form method = "post" action = "details.php">
    <fieldset>
      <label for="name">Number of hours</label>
      <input type="text" name="newhours" id="name" value = <?php echo $totalhours; ?>  class="text ui-widget-content ui-corner-all">
      <label for="email">Frequency</label>
      <select name = "newfreq">
           <option val='1'><?php echo return_frequency($typedeal ,1)?></option>
            <option val='2'><?php echo  return_frequency($typedeal ,2); ?></option>
      </select>

      <input type = "hidden" name = "included" value = '<?php echo $included;?>'/>
      <input type = "hidden" name = "id" value = '<?php echo $id_bus;?>'/>
      <br>
      <input type="submit" tabindex="-1" >
    </fieldset>
  </form>
</div>

return_frequency() 是一个 php 函数,根据输入返回“每 2 周”或“每周”。

我在这里缺少什么?

【问题讨论】:

    标签: php jquery html forms


    【解决方案1】:

    &lt;option val='1'&gt; 应该是&lt;option value='1'&gt;

    我知道可能是 Jquery 让您感到困惑,因为他们经常使用 .val,但实际的 HTML 使用 value,普通的 Javascript 也使用 .value

    我认为,由于您没有正确指定值,您的浏览器必须以某种方式将文本放入 value 中。但是不要依赖它,因为我认为这可能是一个错误,并非所有浏览器都会这样做。

    【讨论】:

      【解决方案2】:

      改为:

      <select name = "newfreq">
       <option value='1'>every week</option>
       <option value='2'>every 2 weeks</option>
      </select>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        相关资源
        最近更新 更多