某些数据列表无法正确查看。数据列表中仅提出了输入的初始值。我的错在哪里?
我用php和Amazon,Google和French BnF(国家图书馆)的数据生成一些数据列表,以便用户可以选择自己的适当信息。 大多数时间(95%)有效。但是我在某些数据列表上遇到了问题。仅查看一个选项,即输入的初始值。
代码1:
<input id="author" name="item_author" value="Sophie de Ségur" onchange="javascript:submit();" list="data_author">
<datalist id="data_author">
<option value="Comtesse de Ségur">Amazon</option>
<option value="Comtesse de Ségur">BnF</option>
<option value="Sophie Rostopchine de Ségur">Google</option>
<option value="Sophie de Ségur">BnF</option>
<option value=" Bertall">BnF</option>
</datalist>
结果代码1: 仅查看第四个选项(输入的初始值)。
示例2:
<input id="author" name="item_author" value="Catherine Ard" onchange="javascript:submit();" list="data_author">
<datalist id="data_author">
<option value="Mickael Wiles">Amazon</option>
<option value="[textes par Catherine Ard]">BnF</option>
<option value="Catherine Ard">BnF</option>
</datalist>
结果代码2: 仅查看最后一个选项(输入的初始值)
示例3:
<input id="publisher" name="item_publisher" value="Gallimard jeunesse" onchange="javascript:submit();" list="data_publisher">
<datalist id="data_publisher">
<option value="Editions Gallimard">Amazon</option>
<option value="Gallimard jeunesse">BnF</option>
</datalist>
结果代码3: 仅查看最后一个选项(输入的初始值)
在所有3个示例中,当我单击输入右侧的箭头(在chrome上)时,我希望得到一个包含所有选项的菜单。 但是我只能得到输入值的选项。
答案 0 :(得分:0)
问题以其初始值与“输入”的自动完成功能关联,该自动完成功能无法“关闭”。
因此,在“ onchange =“ javascript:submit();”“上下文中的解决方案是使用2个“输入”。
第一个“输入”带有数据列表,value =“”和onmousedown =“ value =”;“在短宽度的“输入”中。
第二个“输入”具有初始值。
NB1:根据“表单”上下文,您可以为两个“输入”使用两个不同的“名称”(并在PHP或JS中对其进行处理)。
NB2:宽度限制的原因(较小的MMI),我更喜欢带有数据列表的“输入”而不是“选择”。
解决方案示例1:
<input id="author" name="item_author" onchange="javascript:submit();" list="data_author" onmousedown="value = '';" style="width:5vmin;">
<datalist id="data_author">
<option value="Comtesse de Ségur">Amazon</option>
<option value="Comtesse de Ségur">BnF</option>
<option value="Sophie Rostopchine de Ségur">Google</option>
<option value="Sophie de Ségur">BnF</option>
<option value=" Bertall">BnF</option>
</datalist>
<input id="author" name="item_author" value="Sophie de Ségur" onchange="javascript:submit();">
感谢:
答案 1 :(得分:0)
扩展@Franck 的回答 - 他对导致仅出现一个选项的行为的初始值是完全正确的。
只是为此提供我的解决方案 - 在 focus
上,您可以获得值,将其设置为 placeholder
并清理该字段 - 因此它仍然可见,但 datalist
仅起作用很好。
使用 jQuery 就可以了;
my_input.focus(function(){
var initial_value = $(this).val()
$(this).val("")
$(this).attr("placeholder", initial_value)
...
)}