如何在PHP的Javascript / jQuery中执行此操作?我试图从开始日期提前填写一个选择列表,最多提前6个月。
$startDate = intval( $c->getStartDate($pid) );
$endDate = strtotime('+6 month', $startDate);
$dateSelectList = '<select name="dateSelect" id="dateSelect">';
$count = 1;
//populates the select list with the starting date of the course up to the next six months
for($date = $startDate; $date <= $endDate ; $date = strtotime('+1 day', $date))
{
$dateSelectList .= '<option id="select'.$count.'" value="'.$date.'">'.date('D d F Y', $date).'</option>';
$count++;
}
$dateSelectList .= '</select>';
答案 0 :(得分:3)
你可以这样做的一种方法是在jQuery中使用ajax。因此,第一步是将代码修改为:
$startDate = intval( $c->getStartDate($pid) );
$endDate = strtotime('+6 month', $startDate);
$dateSelectList = '';
$count = 1;
//populates the select list with the starting date of the course up to the next six months
for($date = $startDate; $date <= $endDate ; $date = strtotime('+1 day', $date))
{
$dateSelectList .= '<option id="select'.$count.'" value="'.$date.'">'.date('D d F Y', $date).'</option>';
$count++;
}
echo $dataSelectList;
然后保存到一个单独的文件中说populate.php
然后在html页面上编写以下代码。代码假定您已将jquery包含在您的页面中,并且您有一个id = dateSelect
的select元素<script>
$(function(){
$.get('populate.php',function(data)
{
$('#dateSelect').html(data);
}
});
</script>
上面的代码在页面加载时调用populate.php,它返回所有选项并将其注入select元素
答案 1 :(得分:1)
这是我在php上的尝试 - &gt;你的代码的JavaScript端口。 6个月期间的确切天数取决于该期间的开始和结束日期,因此如果您需要确切的6个月范围,则需要根据所涉及的每个月的天数进行更多计算。以下代码假定在6个月的时间范围内为182天。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<script>
function newOption(value, text) {
var opt = document.createElement('option');
opt.text = text;
opt.value = value;
return opt;
}
function formatDate(date) {
var da = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
ma = ['January','February','March','April','May','June','July','August','September','October','November','December'],
dr = date.getDate(),
wr = date.getDay(),
mr = date.getMonth(),
yr = date.getFullYear(),
dn = da[wr],
ds = (dr.toString().length == 1) ? '0' + dr.toString() : dr.toString(),
mn = ma[mr],
ys = yr.toString(),
v = dn + ' ' + ds + ' ' + mn + ' ' + ys;
return v;
}
function PopulateDateSelector(startDate, endDate, selector) {
while(selector.length > 0) selector.remove(0);
while(startDate < endDate) {
selector.add(newOption(startDate.getTime().toString(), formatDate(startDate)));
startDate.setTime(startDate.getTime() + (24*60*60*1000));
}
}
</script>
<body>
<select id="dateSelector"></select>
<script type="text/javascript">
var s = document.getElementById('dateSelector'),
startDate = new Date(),
endDate = new Date(startDate.getTime() + (182*24*60*60*1000));
//182 is estimated number of days in a 6 month period.
PopulateDateSelector(startDate,endDate,s);
</script>
</body>
</html>
答案 2 :(得分:1)
您搜索的内容应该或多或少:
<html>
<head>
<title>Demo Javascript populing select field</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ></script>
<script type="text/javascript" >
$("document").ready(function(){
nElement = 6;
sList = {};
for (i = 0; i<=nElement; i++) {
var now = new Date();
var nextDate = new Date();
nextDate.setMonth(now.getMonth()+(i*6));
var value = nextDate.getMonth()+"/"+nextDate.getFullYear();
sList[value] = value;
}
$.each(sList, function(key, value){
var option = $("<option></option>").attr("value",key).text(value);
$("#demo-select").append(option);
});
});
</script>
</head>
<body>
<select name="demo-select" id="demo-select" ></select>
</body>