Javascript-选择选项不起作用

Javascript-选择选项不起作用,javascript,php,html,Javascript,Php,Html,我有一个表单,当用户输入值时,可以从dropdownlist中选择选项 例如:输入值880520实际上会选择年份:1988月份:五一劳动节:20。 javascript函数: <script type="text/javascript"> function completeDOB() { var x = document.getElementById('textvalue').value; var str = x.match(/.{1,2}/g); var day = par

我有一个表单,当用户输入值时,可以从dropdownlist中选择选项

例如:输入值
880520
实际上会选择
年份:1988月份:五一劳动节:20

javascript函数:

<script type="text/javascript">

function completeDOB() {

var x = document.getElementById('textvalue').value;

var str = x.match(/.{1,2}/g);

var day = parseInt(str[2],10) +1;
document.getElementById("dob-day").options[day].selected=true;

var month = parseInt(str[1],10) +1;
document.getElementById("dob-month").options[month].selected=true;

var year = parseInt(19+str[0],10);
document.getElementById("dob-year").options[year].selected=true;
}

</script>
但是,所选选项仅在
有效,但
无效。

年的下拉列表代码:

<select name="dob_year" id="dob-year">
      <option value="">Year</option>
      <option value="">----</option>
      <?php
        $date = (int) date('Y');
        $numYears = 100;
        for ($i=$date; $i >= $date - $numYears; $i--) {
            echo "<option value=\"$i\">$i</option>";
        }
      ?>
</select>

我该如何解决这个问题?选项值必须从01开始吗?

您的
选项是一个。实际上,您可以通过
索引访问
选项
,而不是使用它们的值

幸运的是,我打赌您的day和month selectElements已定义其0th索引,因此下一个索引与您的
day
month
值匹配

但是,这不适用于您的
年份
selectElement。 您需要根据其年份值选择正确的
选项
元素,并将其
所选
设置为

例如

function completeDOB() {
  var x = document.getElementById('textvalue').value;
  var str = x.match(/.{1,2}/g);

  var day = parseInt(str[2],10) +1;
  document.getElementById("dob-day").options[day].selected=true;

  var month = parseInt(str[1],10) +1;
  document.getElementById("dob-month").options[month].selected=true;

  var year = parseInt(19+str[0],10);
  var year_options = [].filter.call(document.getElementById('dob-year').options, function (opt) {
    return opt.value == year
  });
  if (year_options && year_options.length) {
    year_options[0].selected = true;
  }
}

您的
选项是一个。实际上,您可以通过
索引访问
选项
,而不是使用它们的值

幸运的是,我打赌您的day和month selectElements已定义其0th索引,因此下一个索引与您的
day
month
值匹配

但是,这不适用于您的
年份
selectElement。 您需要根据其年份值选择正确的
选项
元素,并将其
所选
设置为

例如

function completeDOB() {
  var x = document.getElementById('textvalue').value;
  var str = x.match(/.{1,2}/g);

  var day = parseInt(str[2],10) +1;
  document.getElementById("dob-day").options[day].selected=true;

  var month = parseInt(str[1],10) +1;
  document.getElementById("dob-month").options[month].selected=true;

  var year = parseInt(19+str[0],10);
  var year_options = [].filter.call(document.getElementById('dob-year').options, function (opt) {
    return opt.value == year
  });
  if (year_options && year_options.length) {
    year_options[0].selected = true;
  }
}

您没有上述值为
88
选项。当
year
88
时,您必须输入
1988
而不是
88
或在php代码
echo“$i”中添加更新编辑了上面的代码,我在前面添加了
19
,但它不起作用。我在线程中编辑了一些发现。您没有
选项,上面的值为
88
。当
year
88
时,您必须输入
1988
而不是
88
或在php代码
echo“$i”中添加更新
编辑了上面的代码,我添加了
19
infront,但它也不起作用。我在线程中编辑了一些发现。谢谢你救了我的命!几个小时来一直在寻找解决方案,谢谢你的解释。很高兴它有帮助。谢谢你救了我的命!几个小时来一直在寻找解决方案,感谢您的解释。很高兴它有所帮助。
<option value="03">2018</option>
<option value="04">2017</option>
<option value="05">2016</option>
etc.
function completeDOB() {
  var x = document.getElementById('textvalue').value;
  var str = x.match(/.{1,2}/g);

  var day = parseInt(str[2],10) +1;
  document.getElementById("dob-day").options[day].selected=true;

  var month = parseInt(str[1],10) +1;
  document.getElementById("dob-month").options[month].selected=true;

  var year = parseInt(19+str[0],10);
  var year_options = [].filter.call(document.getElementById('dob-year').options, function (opt) {
    return opt.value == year
  });
  if (year_options && year_options.length) {
    year_options[0].selected = true;
  }
}