我想在codeigniter中创建多个下拉列表,在我的情况下,当用户选择国家/地区时,下一个列表应提供该国家/地区的州选项,并且在用户选择州后,下一部分应提供城镇选项等。 ..我希望使用一些脚本提供列表或选项,当用户最终完成选择时,应在数据库中更新列表。是否可以通过使用脚本而不是从数据库加载选项来提供选项列表。这是我想要实现动态下拉列表的视图和模型文件
form_model.php
function r_ins()
{
$session_user=$this->session->userdata('logged_in');
$sysdat = date("Y-m-j H:i:s");
$data= array(
'id' => $this->input->post('id'),
'name' => $this->input->post('name'),
'country' => $this->input->post('country'),
'state' => $this->input->post('state'),
'town' => $this->input->post('town'),
'village' => $this->input->post('village'),
'c_name' => $session_user['username'],
'c_date' => $sysdat
);
$this->db->insert('r_info',$data);
return $this->input->post('id');
//echo "<pre>";
// print_r($_POST);
}
view.php
<label> ID:<span id="r_id" style="font-size:12px;float:right;"></span></label>
<input type="text" name="id" id="r_id" placeholder="ID" required/>
<label >Name:</label>
<input type="text" name="name" placeholder="Name" required/>
<label >Country:</label>
<select name="country" >
<option>Select Country</option>
<option value="USA">USA</option>
<option value="AUS">Austrailia</option>
<option value="Jap">Japan</option>
<option value="Korea">Korea</option>
</select><br/><br/>
<label >State:</label>
<input type="text" name="state" placeholder="State" required/>
<label >City:</label>
<input type="text" name="city" placeholder="City" required/>
<label >Town:</label>
<input type="text" name="town" placeholder="Town" required/>
<input type="submit" value="Save" id="re_submit" class="button"><br/>
</form>
答案 0 :(得分:0)
<script type="text/javascript">
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getDoc(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('my_div').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
这里是魔术发生的地方。在我的第一个下拉列表中,我放置了一个onChange属性。这会调用我的getDoc javascript函数,它具有PHP FUNCTION作为参数。
<select name="docSpec" id="docSpec" onChange="getDoc('getSpec.php?spec='+this.value)">
<option>pick a specialization</option>
<option value="General">General</option>
<option value="pediatrics">pediatrics</option>
<option value="Physician">Physician</option>
<option value="Cardiologist">Cardiologist</option>
<option value="Pulmonary">Pulmonary</option>
</select>
<div id="my_div" style="display:inline;">
<!--content from getSpec.php goes here--->
</div>
现在您需要HTML中的DIV从另一个页面获取数据,然后在当前页面中将其作为DOM返回。这样您的原始页面就不会刷新,但仍会从服务器获取数据。
<强> getSpec.php 强> 显示php表单下发生的事情
require_once('dbcon.php');
$query="select doctorName from doctors where specialty= '$spec'";
$result=mysqli_query($conn,$query);
?>
<select name="docName">
<?php
while( $row = mysqli_fetch_row($result)) {
echo "<option type='hidden' value='$row[0]'>$row[0]</option>";
} ?>
</select>
我希望此代码有所帮助。你可以根据自己的需要调整它。