【问题标题】:Keep jquery option value, save user's value保留jquery选项值,保存用户值
【发布时间】:2015-12-17 19:25:07
【问题描述】:

我正在尝试实现一些非常小的目标。我会尽力解释的。

我有一个选项表单,其中包含多个选择、年、月和日期。每当用户选择某些东西时,都会提交表单,以便我可以从数据库中获取数据。

<form role="form" action="" method="post">
<select class="form-control" id="day" name="day" onchange="this.form.submit()">
       <option>- Dummy option -</option>
       <option>- Dummy option -</option>
       <option>- Dummy option -</option>
       <option>- Dummy option -</option>
</select>
</form>

一个代表日、月和年。

元素的 ID 是 "day", "month", "year"

我试图默认显示今天的日期,它会自动获取今天的信息。

由于我对 JS/JQ 比较陌生,因此我尝试将选项设置为今天的日期:

var fYear = CurrentDate.getFullYear();
var fMonth = CurrentDate.getMonth()+1;
var fDay = CurrentDate.getDate();

$("#year").val(fYear);
$("#month").val(fMonth);
$("#day").val(fDay);

问题在于,每当用户选择一个选项时,它都会不断重新附加今天的日期,从而覆盖用户的选择。

-- 问题--

当用户没有对选择表单执行任何操作时,我将如何只显示今天的日期?仅当用户未更改表单时才显示日期。

谢谢。

【问题讨论】:

  • 您在哪里提交表单?你也可以张贴你的表格吗?
  • onchange="this.form.submit(),只要选择了一个选项,就会自动提交表单。
  • 这是我想看看你在哪里提交的,其实我只是想知道表单的动作?
  • 是的,这是一个 php 页面/文件

标签: javascript php jquery mysql date


【解决方案1】:

我相信您可能想要使用jQuery.ajax,它可以让您在不刷新页面的情况下提交表单。

假设您的页面名为 page.html,而您的 HTML 看起来类似于 -

<form id="myform" role="form" action="" method="post">
  <select class="form-control" id="day" name="day" onchange="this.form.submit()">
   <option>- Dummy option -</option>
   <option>- Dummy option -</option>
   <option>- Dummy option -</option>
   <option>- Dummy option -</option>
  </select>
</form>

你的 javascript 应该是这样的

$("#myform").submit(function(event){
  event.preventDefault();
  $.ajax({
    type: "post",
    url: "page.html",
    data: $(this).serialize(),
    success: function (result) {
      ..... do something with the result
    },
    error: function() {
      ..... report the error
    }
});

【讨论】:

  • 谢谢@john C,这听起来很有趣,我会马上试试!我会告诉你这是否有效。另外,您是否缺少 ( ,$this().serialize ?
  • 感谢指出,应该是$(this).serialize();我现在已经更正了。
  • 就目前而言,使用 Ajax 简直是解决整个问题的最佳解决方案。我没有使用 Ajax,因为我创建了一些 PHP 检查来确定日期是否已设置,如果没有,请附加它。如果我没有使用 PHP,我会使用 @John c 的解决方案,它也可以。再次感谢您!
【解决方案2】:

为什么不通过类选择器.date 重置页面加载时的所有日期字段,然后设置今天的日期。

HTML 代码:

<input class="dt" type="text" name="date"/>
<input class="dt" type="text" name="month"/>
<input class="dt" type="text" name="year"/>

JS 代码:

$('document').ready(function(){
    $(".dt").val(''); 
    $("#year").val(fYear);
    $("#month").val(fMonth);
    $("#day").val(fDay);
});

【讨论】:

  • 我自己可能不清楚,但这并没有给我带来想要的结果。
【解决方案3】:

在您的 jQuery 代码中分配默认值之前,您可以检查下拉菜单是否具有选定的值。如果没有,那么您可以分配默认值。

if($('#year').val() == ''){
    $('#year').val('fYear');
}

【讨论】:

  • 根本不起作用,因为表单正在提交,因此页面刷新并附加当前日期。
  • 在您的服务器代码中,您可以检查 POST 数据中的选定值,然后将属性 selected="selected" 添加到具有该值的 &lt;option&gt; 标记中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
相关资源
最近更新 更多