Javascript 没有选定选项时重置选择下拉选项
我想在未选择任何选项时重置选择下拉选项(将选择下拉选项的第一个选项设置为默认值,当失去对选择的关注但未选择任何选项时),正如您在我的代码段中看到的,它可以重置,但问题是,当您从“选择”下拉选项中选择一个选项,然后再次单击“选择”并从“选择”中失去焦点时,它不会重置。有什么想法、线索、建议、建议、帮助吗Javascript 没有选定选项时重置选择下拉选项,javascript,jquery,Javascript,Jquery,我想在未选择任何选项时重置选择下拉选项(将选择下拉选项的第一个选项设置为默认值,当失去对选择的关注但未选择任何选项时),正如您在我的代码段中看到的,它可以重置,但问题是,当您从“选择”下拉选项中选择一个选项,然后再次单击“选择”并从“选择”中失去焦点时,它不会重置。有什么想法、线索、建议、建议、帮助吗 $(文档).ready(函数(){ //恢复选择下拉选项的第一个选项 var tt=“”; $(文档).on(“焦点”,“选择”,函数()){ $(this.find('option:first
$(文档).ready(函数(){
//恢复选择下拉选项的第一个选项
var tt=“”;
$(文档).on(“焦点”,“选择”,函数()){
$(this.find('option:first child').prop({disabled:true}).show();
tt=$(this.val();
});
$(文档)。在(“更改”、“选择”函数()上){
tt=“”;
$(this.focusout();
});
$(文档).on(“focusout”,“select”,函数(){
if($(this).val()==tt){
$(this).find('option:first child').prop({selected:true,disabled:true}).closest(“select”).trigger(“change”);
}
tt=“”;
});
});代码>
选择测试
测试选项1
测试选项2
测试选项3
测试选项4
选择测试
测试选项1
测试选项2
测试选项3
测试选项4
不理解您的问题,请您详细说明并运行我的代码片段!首先,我想要的是,如果在选择下拉菜单处于焦点时没有选择任何选项,则通过将第一个选项设置为默认选项来重置选择下拉菜单(对于第一个选项,selected为true),现在的问题是,当您在选项上选择,然后再次聚焦在选择上,然后在当前聚焦的选择上失去焦点时,选择不会重置,你必须先选择一个选项,然后再对焦,然后再对焦,第二次失去了选择的焦点,才能重置我不想要的选择下拉列表。当你选择一个选项并再次单击选择时,选择不会失去焦点,它只是关闭下拉列表。在点击其他东西之后,它就会失去焦点。因为没有做任何更改,所以会重置。@命名意义25:是的,请尝试在选项上选择,然后单击任意位置(不是在当前焦点选择上),然后再次单击选择,再单击任意位置,选择将重置。我想问题是当选择聚焦时,选择不会重置。这是正确的。您可以在单击“离开”后立即调用“聚焦输出”上的重置事件。您还可以收听单击事件并检查下拉列表是否打开。
$(document).ready(function(){
//restore the first option of the select dropdown option
var tt = "";
var open = false;
$(document).on("focus","select",function(){
if(open) {
open = false;
}
$(this).find('option:first-child').prop({ disabled : true }).show();
tt = $(this).val();
});
$(document).on("change","select",function(){
tt = "";
$(this).blur();
});
$(document).on("blur","select",function(){
if($(this).val() === tt){
$(this).find('option:first-child').prop({ selected : true, disabled : true }).closest("select").trigger("change");
}
tt = "";
});
//When the dropdown closes it blures the select. Catuion this will also trigger
//if you open select and select nothing and close it back. In that case the select
//will be reset.
$(document).on("click","select",function(){
open = !open;
if(!open){
$(this).blur();
}
});
});