我基于autocompleter箱的工作是Scriptaculous于Ajax.Autocompleter 。
它的工作原理一般,但我需要有更广泛的选择列表(见图片 -绿线- 320像素),然后输入框(见图片 -红线- 155px)。
我的第一次尝试是设置不同width
的CSS类 (比如上图),但它没有工作-的选项列表变得一样宽的输入框。
据Firebug的width
由我的CSS类定义被覆盖width
由设置element.style
CSS类,它似乎被定义Ajax.Autocompleter
。
我的第二个尝试是设置width
创建后的选项列表Ajax.Autocompleter
$("isearch_choices").setStyle({width: "320px"});
但它并没有太多工作:(。
没有更多的想法:(。
如何设置对Scriptaculous的于Ajax.Autocompleter选择列表中的不同宽度?
下面有代码的完整的例子:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js"></script>
<style>
input.iSearchInput {
width: 155px;
height: 26px;
margin-top: 7px;
line-height: 20px;
}
div.iSearchChoices {
position:absolute;
background-color:white;
border:1px solid #888;
margin:0;
padding:0;
width: 320px;
}
div.iSearchChoices ul {
list-style-type:none;
margin:0;
padding:0;
}
div.iSearchChoices ul li.selected { background-color: #ffb;}
div.iSearchChoices ul li {
list-style-type:none;
display:block;
margin:0;
padding:2px;
height:32px;
cursor:pointer;
border-bottom: 1px dotted #929292;
}
</style>
</head>
<body>
<input type="text" maxlength="255" class="input iSearchInput" name="isearch_value" id="isearch" value="Search" onfocus="this.select()">
<br>
<div id='isearch_choices' class='iSearchChoices'></div>
</script>
</body>
<script>
function iSearchGetSelectedId(text, li) {
console.log([text, li.innerHTML].join("\n"));
document.location.href = li.getAttribute("url");
}
document.observe('dom:loaded', function() {
try {
new Ajax.Autocompleter("isearch", "isearch_choices", "/url", {
paramName: "phrase",
minChars: 1,
afterUpdateElement : iSearchGetSelectedId
});
}
catch (ex) {
alert(ex);
}
$("isearch_choices").setStyle({width: "320px"});
});
</script>
</html>
并链接到的图像,其结果 。