当前位置: 代码迷 >> Java Web开发 >> 一个复杂的有关问题,多步
  详细解决方案

一个复杂的有关问题,多步

热度:7078   发布时间:2013-02-25 21:14:54.0
一个复杂的问题,多步
先贴代码

<tr class="tr_data1">
  <td>公司名称</td>
  <td><select name="companyName" size="1" style="position:absolute; left: 237px; top: 85px; width: 220px; height: 20px;
  clip: rect(0 237 18 200)" onchange="company_name.value=companyName.value; company_name.select()">
  <%
  for(Iterator iter = list.iterator(); iter.hasNext(); ) {
  piv = (PropertyInfoView)iter.next();
  %>
  <option value="<%=piv.getId() %>"><%=piv.getCompanyName() %></option>
  <%
  } 
  %>
  </select><input type="text" size="35" name="company_name" style="position:absolute; left: 237px; top: 85px; width: 220px; height: 18px"></td>
</tr>

-----------------------------

输入框 下拉框在一起 ,下拉的数据读取的是数据库 

现在:company_name.value=companyName.value

上面这句话显示的是 前面的id,我想显示select中间的值,改如何解决?

问题2 :现在可以保存,选择下拉的话。

但要是输入的话,输入的公司还保存不上,只能默认保存 下拉默认选中的。


问题3:input输入 如何 显示 数据库里面相关的信息,并 在下拉显示











------解决方案--------------------------------------------------------
问题1:
onchange="company_name.value=companyName.value; company_name.select()"
改一下吧:
onchange="company_name.value=renderInput(this); company_name.select()">
定义函数renderInput
function renderInput(obj){
var opts = obj.options;
for(var i = 0 ; i < opts.length ; i ++){
if(opts[i].checked == "true" || opts[i].checked == "checked"){
document.getElementById("companyName").value = opts[i].text;
}
}
}

问题2:
不清楚你的需求,你干脆这样嘛,将输入框中的值使用js添加至下拉框中,再将添加进去的值选中不就OK了嘛

问题3:
你上面的select中的值不就是从数据库查出来的么?还需要怎么样啊?

------解决方案--------------------------------------------------------
你的输入框是查找select的值还是从服务器从新匹配新数据?

如果是查找select里面的值,可以参考这个示例

select对象option的autocomplete自动完成

如果是从服务器下载数据,input添加onblur事件,blur的时候ajax将输入框的值发送到动态页,动态页查询数据库后返回html代码,如<select name="xxx"><option value="xxx">xx</option>...</select>这种,然后设置select容器的innerHTML就行了,注意要给select加一个容器
<label>
<select name="companyName" size="1" style="position:absolute; left: 237px; top: 85px; width: 220px; height: 20px;
clip: rect(0 237 18 200)" onchange="company_name.value=companyName.value; company_name.select()">
<%
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
piv = (PropertyInfoView)iter.next();
%>
<option value="<%=piv.getId() %>"><%=piv.getCompanyName() %></option>
<%

%>
</select></label>
------解决方案--------------------------------------------------------
ajax填充:
$.ajax({
type: "post",
url: "/yoblhtjfx/queryArea.action",
data: "parm="+val+"&jsoncallback=?",
dataType: "json",
success: function(json){
var list = json.list;
$("#inUnitAreaId").empty();
$("#inUnitAreaId").prepend("<option value=''>请选择</option>");
for(var i=0;i<list.length;i++)
{
$("#inUnitAreaId").append("<option value='"+list[i][0]+"'>"+list[i][1]+"</option>");
}
}

});

$("#projectId").val(val+"1");

动态时间查询:
  相关解决方案