Javascript-选择选项不起作用
我有一个表单,当用户输入值时,可以从dropdownlist中选择选项 例如:输入值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
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;
}
}