先贴代码<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输入 如何 显示 数据库里面相关的信息,并 在下拉显示
<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输入 如何 显示 数据库里面相关的信息,并 在下拉显示
解决方案 »
- 如何将两个List进行比较过滤出所要的数据。
- MyEclipse <jsp:include page="/inc/foot.jsp" flush="false">为什么报错
- 关于[Microsoft][SQLServer 2000 Driver for JDBC]Broken pipe和[Microsoft][SQLServer 2000 Driver for JDBC]Connection
- 替换问题
- 【急】JSP做RTX的短信二次开发
- 在struts中点击链接后将链接文字显示到文本框?
- 如何将SQLSERVER的日期类型修改~~~~~~~~~~~~~~~急救
- 连接Oracle问题——时间
- 这个下拉选框应该怎么做呀.
- 关于resin的配置问题
- SSH2+DWR框架问题求救~~~~~
- 在子窗体刷新父窗体
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中的值不就是从数据库查出来的么?还需要怎么样啊?
var obj = document.getElementById("companyName");
var company_name = document.getElementById("company_name");
var index = obj.selectedIndex;
var value = obj.options[index].text;
company_name.value = value;
company_name.select();
}
这个解决了问题1的一部分,存在bug
默认选中那个添加不上,必须 选一下别的 才能选中
如果想向文本框中输入值,select也联动的话,可以采用人家的建议使用ajax查一下,填充到select中呗!
一种情况,页面加载的时候,从数据库里读出来,加载到下拉列表里。
一种情况,页面局部动态显示,ajax,局部刷新。
网高人指点一下 ,用javascript 和 Ajax 如何实现楼上能 具体说说嘛。
<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="changeValue();" onclick="checkValue();" >
<%
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" onclick="checkInputValue();"></td>
</tr>
------------------ function changeValue() {
var obj = document.getElementById("companyName");
var company_name = document.getElementById("company_name");
var index = obj.selectedIndex;
var value = obj.options[index].text; company_name.value = value;
company_name.select();
}
function checkValue() {
var obj = document.getElementById("companyName");
var company_name = document.getElementById("company_name");
var index = obj.selectedIndex;
if(index == 0) {
company_name.value = obj.options[0].text;
}
}
function checkInputValue() {
var company_name = document.getElementById("company_name");
company_name.value = "";
}-------------------现在还差上面的问题,动态检索,不知道用什么事件判断。我的实现方法笨 了一些,如果谁有好的,指点一下。代码贴出来了,望高人指教。
<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>
那就需要在输入框里实现onchange事件,在input 下面放一个DIV,每次onchange调用ajax从数据库查询相应的数据,然后返回给DIV里。div每一条数据都有一个onclick事件,把自己的值传递给input。这是我大概的想法,没什么技术含量,但应该能实现。
<jsp:directive.page import="com.pkpm.fund.bean.PropertyInfoBean"/>
<jsp:directive.page import="com.pkpm.fund.view.PropertyInfoView"/>
<%
String k,xml,res;
res = "";
xml = "";
k = (request.getParameter("k") + "").trim();
if (k != null) {
//当出现中文字符时,最好用XML作为信息载体,要不出现乱码
//k = k.replace(k,"'","''");
String cn,rs,sql;
xml=xml + "<?xml version='1.0' encoding='gb2312'?>";
xml=xml + "<data><d><![CDATA[";
sql="select top 10 companyName from property_info where companyName like '%&k&%'"; //返回前10条数据;
List list = new PropertyInfoBean().getPropertyInfoListBySql(sql);
for(int i=0; i<list.size(); i++) {
PropertyInfoView piv = (PropertyInfoView)list.get(i);
xml = xml + "<div onclick='setContent(this.innerHTML)'>" + piv.getCompanyName() + "</div>";
}
xml=xml + "]]></d></data>";
response.setCharacterEncoding("gb2312");
response.setContentType("text/xml");
response.getWriter().write(xml);
}
else {
response.getWriter().write(xml);
}
%> 我是我的jsp代码,刚才在修改,提示 报错。select外边有td 可以么
$.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");动态时间查询:
$(function(){
if($.browser.msie)
{
$("#country").get(0).attachEvent("onpropertychange",function (o){
var countr = o.srcElement.value;
$.ajax({
type: "post",
url: "/yoblhtjfx/queryCountryAjax.action",
data: "country="+countr+"&jsoncallback=?",
dataType: "json",
success: function(json)
{
var tableHTML="";
tableHTML+="<table id='tabb1' border='1' width='100%'>";
tableHTML+="<tr>";
tableHTML+="<td style='text-align: center' >选择</td>";
tableHTML+="<td style='text-align: center' >区域码</td>";
tableHTML+="<td style='text-align: center' >国别名称</td>";
tableHTML+="</tr>";
var list = json.list;
for(var i=0;i<list.length;i++)
{
tableHTML+="<tr>";
tableHTML+="<td style='text-align: center'><input type='radio' name='radioo' value='"+list[i][1]+"' /></td>";
tableHTML+="<td style='text-align: center'>"+list[i][0]+"</td>";
tableHTML+="<td style='text-align: center'>"+list[i][1]+"</td>";
tableHTML+="</tr>";
}
tableHTML+="</table>";
$("#querycountrydiv").html(tableHTML);
}
});
});
}
});
<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="changeValue();" onclick="checkValue();" >
<%
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
piv = (PropertyInfoView)iter.next();
%>
<option value="<%=piv.getId() %>"><%=piv.getCompanyName() %></option>
<%
}
%>
</select><input type="text" size="35" id="company_name" name="company_name" style="position:absolute; left: 237px;
top: 85px; width: 220px; height: 18px" onclick="checkInputValue();" onkeyup="getD(this.value);"></td>
<div id="dvContent" style="display:none;position:absolute"></div>
</tr>
------------------------
javascript: //下拉
var obj;;
var to;//setTimeout时间变量,对于输入快时可以延迟查询
function getD(va)
{
if(to) clearTimeout(to);
to = setTimeout("getData('"+va+"')",500);//延迟500毫秒后再查询
}
function getData(va)
{
document.getElementById("dvContent").style.display="none";
if(va!="")
{
var url='res.jsp?ts='+new Date().getTime()+'&k='+va;
obj = CreateAJAX();
if(obj)
{
obj.onreadystatechange=handlejs;
obj.open('GET',url,true);
obj.send(null);
}
else
alert("创建AJAX对象失败!");
}
}
function handlejs()
{
if(obj.readyState==4)
{
if(obj.status==200)
{
if(obj.responseXML)
{
xml=obj.responseXML;
node=xml.getElementsByTagName("d");
var dv=document.getElementById("dvContent");
dv.innerHTML=node[0].firstChild.nodeValue;
dv.style.display="";
}
}
else
alert("请求的文件出错,请检查!");
}
}
function CreateAJAX()
{
if(window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function setContent(data)
{
document.getElementById('company_name').value=data;
document.getElementById('dvContent').style.display="none";
}
function setPosition()
{
var dv=document.getElementById('dvContent');
dv.style.left=getPos("x");
dv.style.top=getPos("y")+20;
}
function getPos(type)
{
var p;
var o=document.getElementById('company_name');
if(type=="x")
p=o.offsetLeft;
else
p=o.offsetTop;
while(o=o.offsetParent)
{
if (type=="x")
{
p+=o.offsetLeft;
}
else
{
p+=o.offsetTop;
}
}
return p;
}
------------------------
jsp:<%@ page language="java" import=" java.util.*" %>
<jsp:directive.page import="com.pkpm.fund.bean.PropertyInfoBean"/>
<jsp:directive.page import="com.pkpm.fund.view.PropertyInfoView"/>
<%
String k,xml,res;
res = "";
xml = "";
k = (request.getParameter("k") + "").trim();
if (k != null) {
//当出现中文字符时,最好用XML作为信息载体,要不出现乱码
//k = k.replace(k,"'","''");
String cn,rs,sql;
xml=xml + "<?xml version='1.0' encoding='gb2312'?>";
xml=xml + "<data><d><![CDATA[";
sql="select top 10 companyName from property_info where companyName like '%&k&%'"; //返回前10条数据;
List list = new PropertyInfoBean().getPropertyInfoListBySql(sql);
for(int i=0; i<list.size(); i++) {
PropertyInfoView piv = (PropertyInfoView)list.get(i);
xml = xml + "<div onclick='setContent(this.innerHTML)'>" + piv.getCompanyName() + "</div><br>";
}
xml=xml + "]]></d></data>";
response.setCharacterEncoding("gb2312");
response.setContentType("text/xml");
response.getWriter().write(xml);
}
else {
response.getWriter().write(xml);
}
%>
var obj1 = document.getElementById("companyName");
var company_name = document.getElementById("company_name");
var index = obj1.selectedIndex;
var value = obj1.options[index].text; company_name.value = value;
company_name.select();
}
function checkValue() {
var obj2 = document.getElementById("companyName");
var company_name = document.getElementById("company_name");
var index = obj2.selectedIndex;
if(index == 0) {
company_name.value = obj2.options[0].text;
}
}
function checkInputValue() {
var company_name = document.getElementById("company_name");
company_name.value = "";
}
xx.jsp,不会用java,大概根据你的代码修改了下
<%@ page language="java" import=" java.util.*" %>
<jsp:directive.page import="com.pkpm.fund.bean.PropertyInfoBean"/>
<jsp:directive.page import="com.pkpm.fund.view.PropertyInfoView"/>
<%
String k,xml,res;
res = "";
xml = "";
k = (request.getParameter("k") + "").trim();
if (k != "") {
sql="select top 10 companyName from property_info where companyName like '%"+k+"%'"; //返回前10条数据;
List list = new PropertyInfoBean().getPropertyInfoListBySql(sql);
for(int i=0; i<list.size(); i++) {
PropertyInfoView piv = (PropertyInfoView)list.get(i);
xml = xml + "<option value='" + piv.getCompanyName() + "'>" + piv.getCompanyName() + "</option>";
}
response.setCharacterEncoding("gb2312");
response.getWriter().write(xml);
}
%> <script type="text/javascript" src="http://www.code-design.cn/js/jquery.js"></script><!--导入jq-->
<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()" id="companyName"><!--注意加ID-->
<%
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" onblur="loadCompany(this.value)"></td>
</tr>
<script type="text/javascript">
function loadCompany(v) {
if ($.trim(v) != '') {
$.ajax({ url: 'xx.jsp', data: 'k=' + escape(v), method: 'POST', success: function (xhr) {
$('#companyName').html(xhr.responseText);
}, error: function (xhr) { alert('发生错误\n' + xhr.responseText); }
});
}
}
</script>