一个HTML用户界面元素,用于从有限的选项集合中选择一个或多个选项。
按钮和下拉下拉使用相同的表演/隐藏jQuery,结果矛盾 - 如何调解问题
https://codepen.io/wammygiveaway/pen/vywrrwg 您正在看到的是用户Kurt创建的节目隐藏切换的jQuery版本,以响应用户1575698在切换多个ID时的问题。 ...
我有一个带有一些选项的选择元素,但是我希望某些选项不可选择。 基本上就是这样: 城市1 我有一个带有一些选项的元素,但是我希望某些选项不可选择。 基本上是这样的: select 如您所见,我不希望这些城市可以直接选择,而只能选择每个城市下面的选项。 用户可以单击<select> <option> CITY 1 </option> <option> City 1 branch A </option> <option> City 1 branch B </option> <option> City 1 branch C </option> <option> CITY 2 </option> <option> City 2 branch A </option> <option> City 2 branch B </option> ... </select> 或CITY 1,但不能选择它,但不会选择它,因此用户被迫选择下面的一个分支? 您可能正在寻找一个:: CITY 2 Demo:Http://jsfiddle.net/zg9mw/ 如果您确实需要使常规<optgroup>元素不可选择,则可以给它们提供<select> <optgroup label="CITY 1"> <option>City 1 branch A</option> <option>City 1 branch B</option> <option>City 1 branch C</option> </optgroup> <optgroup label="CITY 2"> <option>City 2 branch A</option> <option>City 2 branch B</option> </optgroup> </select>属性(这是一个布尔属性,所以该值根本不重要): <option> 我可以看到以前的答案实际上是您要寻找的内容,但是对于像我这样的堆叠问题的人们寻找类似答案,您只需在选项中键入disabled。 <option disabled>City 2 branch A</option> jsfiddledemo from:如何默认显示禁用html选择选项? 这是做同样事情的另一种方式。 Edit:(现在您可以在这里运行) disabled <select> <option value="apple" disabled>Apple</option> <option value="peach">Peach</option> <option value="pear">Pear</option> <option value="orange" disabled >Orange</option> </select> 你会使用<label>Unreal :</label> <select name="unreal"> <option style="display:none">Select One</option> <option>Money</option> <option>Country</option> <option>God</option> </select> jsFiddle Demo 有很多选择来实现这一目标,我建议一个名为选择的jQuery插件: 它会: <optgroup> 链接是https://harvesthq.github.io/chosen/ simply将禁用属性添加到您不想选择的选项标签中 <select> <optgroup label="City 1"> <option>City 1 Branch A</option> <option>City 1 Branch B</option> <option>City 1 Branch C</option> </optgroup> <optgroup label="City 2"> <option>City 2 Branch A</option> <option>City 2 Branch B</option> </optgroup> </select> 实际上,您可以在<select data-placeholder="Choose a Country..." class="chosen-select chose-select-width-custom" multiple tabindex="4" name="countryDigestValues"> <option value=""></option> <optgroup class="custom-optgroup-class" label="Label Title"> <option class="custom-option-class">Here goes the option to select</option> </optgroup> </select> 元素上同时同时使用<select> <option disabled> CITY 1 </option> <option> City 1 branch A </option> <option> City 1 branch B </option> <option> City 1 branch C </option> <option disabled> CITY 2 </option> <option> City 2 branch A </option> <option> City 2 branch B </option> </select> 和selected属性,以防您想具有一种内联标签来提供基本说明,而无需让用户选择它。 disabled效果也很棒。 给予许多回应。这取决于您要使用的第一个选项。如果您想将其显示为某种指南。例如,选项1是“选择城市”,但您不希望用户选择它。 <option> 通过使用上述代码,选择城市将是默认选项。但是用户将无法从选项中选择它。 使用禁用不会渲染默认值,也不可选。 如果您想有条件地禁用该选项,则可以考虑IF语句。
I将WebKit-apercearance属性设置为无。打开选项列表时,我想显示另一个背景图像(箭头上)。是...
我有一个Telerik网格,正在使用内联编辑。在编辑中,我有一个选择的下拉列表,供用户选择他需要的选项。在我的视图模型中,如果用户处于编辑模式,我想要...
从一个按钮的两个选择框之一中选择下载文件-JavaScript
我有两个选择的盒子,所以: 选择文件 file One&... 我有两个盒子类似: select 我的功能是我的<select id="one"> <option value="default">Select File</option> <option value="path/to/file1">File One</option> <option value="path/to/file2">File Two</option> <option value="path/to/file3">File Three</option> </select> <select id="two"> <option value="default">Select File</option> <option value="path/to/file4">File Four</option> <option value="path/to/file5">File Five</option> <option value="path/to/file6">File Six</option> </select> <p class="button_image"> <a onclick="download(document.getElementById("one").value)"></a> </p> 函数: download this this for一个function download(file) { if (file == 'default') return; window.location = 'http://www.example.com/download/' + file; } 框,但我似乎无法弄清楚如何使用相同的按钮图像。 哦,是的,select具有背景图像,是一个具有悬停效果的按钮。 我希望这些box是分开的原因是因为它们每个都代表一组文件,例如32位对64位。 因此,它们不能合并,因为它不会随页面设计而流动。 我尝试了使用php中的php中的一些if/其他块,但我被卡住了。 这是我尝试的,它似乎只是部分工作: p.class=button_image 我应该提到,对于此而言,PHP并不是必需的。 我只是因为它在服务器端代码中使用而尝试了它。 我很高兴考虑任何工作解决方案。 thanks. **编辑** 该设计可能是有缺陷的,但目的是允许从Box One或Box二的文件下载文件。 选择一个应将另一个重置为默认状态,反之亦然。我目前正在努力实施此功能。 **编辑** 我最终选择了道森·劳登(Dawson Loudon)的答案,而我根据Barmar的评论创建了一个单独的功能,如下所示: select 元素作为按钮似乎不合适,只需使用IMG。 任何方法,使用第一个选择的函数与第一个选项以外的选项以外的其他选项可以是: getElementById 上面的期望第一个选项是选择的默认选项,因此,如果选择它,或者根本没有选择选项,则Selected的SelecteDENDEX将为0或-1个呼应。我将通过将所选属性添加到第一个选项来确保选择一个选项: <?php if ('document.getElementById(\"one\")' == 'one') { echo "<a onclick='download(document.getElementById(\"one\").value)'></a>"; } else if ('document.getElementById(\"two\")' == 'two') { echo "<a onclick='download(document.getElementById(\"one\").value)'></a>"; } ?> 电话是: // resets other select box when selected function reset_index(id) { document.getElementById(id).selectedIndex = 'default'; } 尽管您可能需要在选定元素中添加类,并使用getElementsByClassName或类似和循环在该集合上添加这些元素,而不是硬码。 取代此事: function getPath() { var select; var args = arguments; for (var i=0, iLen=args.length; i<iLen; i++) { select = document.getElementById(arg[i]); if (select && select.selectedIndex > 0) { window.location = 'http://www.mysite.com/download/' + select.value; } } } : <option value="default" selected>Select File</option> 然后用以下方式替换下载功能: <img src="buttonImage.jpg" onclick="download('one', 'two');">
在 jQuery 中,您可以通过在 mousedown 处理程序中使用 event.preventDefault 来阻止 打开其下拉菜单,从而允许您在仍然 的情况下用其他内容替换下拉菜单 在 jQuery 中,您可以通过在 <select> 处理程序中使用 event.preventDefault 来阻止 mousedown 打开其下拉菜单,从而允许您用其他内容替换下拉菜单,同时仍保留表单元素的原始样式。 这在 Chrome 和 MSIE 中工作正常,但在 Firefox 和 Opera 中无论如何都会出现下拉菜单(未在 Safari 中测试)。 示例:http://jsfiddle.net/9cmEh/ 选择元素应该看起来已启用,并且仍然像已启用一样响应所有用户交互,但不应呈现下拉列表。相反,下拉列表将被替换为自定义呈现的内容,例如包括颜色样本、图标或字体,但“自定义下拉列表”部分已经在我的项目中完成。 有人知道如何在所有*浏览器中实现此功能吗? “全部”表示所提到的五个浏览器的最新版本。 $(function() { $('select').on('focus', function(e) { this.blur(); window.focus(); }); }); 小提琴 至少可以在 Firefox 中使用,但似乎在 Chrome 中不起作用? 编辑 我无法想出一种合适的方法来检测一种方法是否有效,所以用一些浏览器嗅探来代替。这并不是最好的方法,但却是我能想到的最好的方法,而且它似乎在我测试过的浏览器中有效: $(function() { $('select').on('focus mousedown', function(e) { if ($.browser.webkit||$.browser.msie) { e.preventDefault(); }else{ this.blur(); window.focus(); } }); }); 你的这个 //e.stopPropagation works only in Firefox. if (event.stopPropagation) { event.stopPropagation(); event.preventDefault(); } 来自这里链接,这可能对歌剧情况有所帮助,这是一个略有不同的问题,但你也许能够让它发挥作用 在大多数情况下,这应该适用于单击和焦点(带选项卡): $('select').on('focus mousedown', function(e){ e.stopPropagation(); e.preventDefault(); this.blur(); window.focus(); }); 这是一个已知错误:https://bugzilla.mozilla.org/show_bug.cgi?id=392863 目前它位于 firefox ESR32 中。 如果像我一样,您在自定义 HTML/Javascript 选择下有一个 hidden <select>,并且仍然希望 将焦点保持在隐藏的 <select> 上(用于辅助功能、选项卡导航、箭头、输入...)。 只需使用z-index: -1。 .hidden-select { position: absolute; opacity: 0; filter: alpha(opacity=0); z-index: -1; } 禁用未选定的元素(选项)。 $('选择选项:not(:selected)').attr("禁用",true);
如何使用 PHP 将选择选项设置为发送表单时选择的选项?这是我陷入困境的代码: 如何使用 PHP 将选择选项设置为发送表单时选择的选项?这是我陷入困境的代码: <?php if(isset($_POST['btSubmit'])) { $selectedOption = $_POST['s']; // Value of selected option … but how to use it below? } ?> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST"> <select name="s"> <option value="" selected disabled>-- choose one --</option> <option value="a">choose a</option> <option value="b">choose b</option> </select> <input type="submit" name="btSubmit"> </form> 因此,当您在页面的下一次加载时发送带有选择的表单时,默认情况下应选择 a。 只需将 selected="selected" 属性添加到您在 option 下收到的 $_POST['s'] 标签即可。 <?php $selectedOption = ''; if(isset($_POST['btSubmit'])) { $selectedOption = $_POST['s']; // Value of selected option … but how to use it below? } function injectSelectedAttribute($selectedOption, $option_value){ return strtolower($selectedOption) === strtolower($option_value) ? 'selected="selected"' : ''; } ?> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST"> <select name="s"> <option value="" disabled>-- choose one --</option> <option value="a" <?php echo injectSelectedAttribute($selectedOption, 'a'); ?>>choose a</option> <option value="b" <?php echo injectSelectedAttribute($selectedOption, 'b'); ?>>choose b</option> </select> <input type="submit" name="btSubmit"> </form> 您可以进一步改进它,通过循环选择选项的 PHP 数组来回显选项的 HTML。 <select required name="role_user" class="form-select"> <?php $options = array( 'DG', 'DD1', 'DD2', 'DD3', 'SPAG', 'AG' ); $options_title = array( 'Admin', 'Superviseur Direction 1', 'Superviseur Direction 2', 'Superviseur Direction 3', 'Super-Agent', 'Agent' ); $output = ''; for( $i=0; $i<count($options); $i++ ) { if ($get_users_data["permission"] == $options[$i]) { echo "<option value=$options[$i] selected> $options_title[$i]</option>"; }else{ echo "<option value=$options[$i] > $options_title[$i]</option>"; } } ?> </select> Try this, <?php if(isset($_POST['btSubmit'])) { $selectedOption = $_POST['s']; // Value of selected option … but how to use it below? } ?> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST"> <select name="s"> <option value="" selected disabled>-- choose one --</option> <option value="a" <?php echo $selectedOption=='a'?'selected':'' ;?>>choose a</option> <option value="b" <?php echo $selectedOption=='b'?'selected':'' ;?>>choose b</option> </select> <input type="submit" name="btSubmit"> </form>
方法 OnClick - ASP.NET Core - 剃刀页面
我有一个带有 标签的按钮,在这个标签中我定义了 onclick 的方法。该事件正在调用脚本。我想将我的标签更改为 ,在此标签中我们不能使用... 我有一个带有 <a> 标签的按钮,在这个标签中我定义了 onclick 的方法。该事件正在调用脚本。我想将标签更改为 <Select>,在此标签中我们不能使用 onclick - 如何在选择标签中使用 onclick 并调用该脚本? 在我的项目中,我希望当单击标签时获取记录 Id 并获取该 Id 的值 我希望当我单击选择(黑色区域)时获取 Id 记录红色区域并从表中获取所有记录值 <a href="#" id="Usernm2" name="id" onclick="getSddIdW(@item.Id)" data-target="#ModalSend" data-toggle="modal" class="AllIcon " data-placement="tooltip" title=""> <i class="btn bg-primary-bright"></i> </a> 下面是<Select>中使用onclick的demo,大家可以参考一下。 @page @model IndexModel @{ ViewData["Title"] = "Home page"; } @functions{ public string GetHello() { return "Hello"; } } <select id="TypeOfUser" name="typeOfUser" class="active text-normal" Onclick="RazorFunction()"> <option value="2" >CMS Users</option> <option value="3">Site Users</option> </select> <button> aa</button> @section Scripts { <script> function RazorFunction() { $("button").html('@GetHello()'); } </script> } 结果: 但我建议你在onchange中使用<Select>。 结果:
我想在我的选择下拉列表中插入一个标签。 此处,“销售”是标签文本,“美国”是下拉选项之一。 实现这个的最好方法是什么。我觉得我必须写......
无法使用我保存在 props 中的 id 作为 React select 中的默认值
我有一个呈现可重用下拉列表的组件。当我使用它添加新项目时,我可以设置类别,但是当我使用它编辑项目时,下拉列表不会显示所选类别
我想在 html 输入标签中添加国家标志,是的,引导程序助手可以做到这一点。但我不知道如何添加链接和脚本来解决我的问题。那么有什么帮助吗?
如何使用 JavaScript 以编程方式选择 HTML 选项?
我有这样的选项菜单: 人1 个人... 我有这样的选项菜单: <form name="AddAndEdit"> <select name="list" id="personlist"> <option value="11">Person1</option> <option value="27">Person2</option> <option value="17">Person3</option> <option value="10">Person4</option> <option value="7">Person5</option> <option value="32">Person6</option> <option value="18">Person7</option> <option value="29">Person8</option> <option value="28">Person9</option> <option value="34">Person10</option> <option value="12">Person11</option> <option value="19">Person12</option> </select> </form> 现在我想使用 href 更改所选选项。例如: <a href="javascript:void(0);" onclick="document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected';">change</a> 但我想选择带有 value=11 (Person1) 的选项,而不是 Person12。 如何更改此代码? 改变 document.getElementById('personlist').getElementsByTagName('option')[11].selected = 'selected' 到 document.getElementById('personlist').value=Person_ID; 作为纯 JavaScript 代码的工具,用于处理 Selectbox: 图解理解: 图片-A 图片-B 图片-C 更新 - 2019 年 6 月 25 日 | Fiddler 演示 JavaScript 代码: /** * Empty Select Box * @param eid Element ID * @param value text * @param text text * @author Neeraj.Singh */ function emptySelectBoxById(eid, value, text) { document.getElementById(eid).innerHTML = "<option value='" + value + "'>" + text + "</option>"; } /** * Reset Select Box * @param eid Element ID */ function resetSelectBoxById(eid) { document.getElementById(eid).options[0].selected = 'selected'; } /** * Set Select Box Selection By Index * @param eid Element ID * @param eindx Element Index */ function setSelectBoxByIndex(eid, eindx) { document.getElementById(eid).getElementsByTagName('option')[eindx].selected = 'selected'; //or document.getElementById(eid).options[eindx].selected = 'selected'; } /** * Set Select Box Selection By Value * @param eid Element ID * @param eval Element Index */ function setSelectBoxByValue(eid, eval) { document.getElementById(eid).value = eval; } /** * Set Select Box Selection By Text * @param eid Element ID * @param eval Element Index */ function setSelectBoxByText(eid, etxt) { var eid = document.getElementById(eid); for (var i = 0; i < eid.options.length; ++i) { if (eid.options[i].text === etxt) eid.options[i].selected = true; } } /** * Get Select Box Text By ID * @param eid Element ID * @return string */ function getSelectBoxText(eid) { return document.getElementById(eid).options[document.getElementById(eid).selectedIndex].text; } /** * Get Select Box Value By ID * @param eid Element ID * @return string */ function getSelectBoxValue(id) { return document.getElementById(id).options[document.getElementById(id).selectedIndex].value; } mySelect.value = myValue; 其中 mySelect 是您的选择框,myValue 是您想要将其更改为的值。 我相信博客文章JavaScript初学者 – 按值选择下拉选项可能会对您有所帮助。 <a href="javascript:void(0);" onclick="selectItemByValue(document.getElementById('personlist'),11)">change</a> function selectItemByValue(elmnt, value){ for(var i=0; i < elmnt.options.length; i++) { if(elmnt.options[i].value === value) { elmnt.selectedIndex = i; break; } } } 您还可以像这样更改 select.options.selectedIndex DOM 属性: function selectOption(index){ document.getElementById("select_id").options.selectedIndex = index; } <p> <select id="select_id"> <option selected>first option</option> <option>second option</option> <option>third option</option> </select> </p> <p> <button onclick="selectOption(0);">Select first option</button> <button onclick="selectOption(1);">Select second option</button> <button onclick="selectOption(2);">Select third option</button> </p> 如果您使用 javascript 添加选项 function AddNewOption(userRoutes, text, id) { var option = document.createElement("option"); option.text = text; option.value = id; option.selected = "selected"; userdRoutes.add(option); } 您也可以使用 JQuery $(document).ready(function () { $('#personlist').val("10"); } 从技术上来说,你自己的答案并没有错,但是你的索引是错误的,因为索引从 0 开始,而不是 1。这就是你选择错误的原因。 document.getElementById('personlist').getElementsByTagName('option')[**10**].selected = 'selected'; 此外,对于标签不完全是英文或数字的情况,您的答案实际上是一个很好的答案。 例如,如果他们使用亚洲字符,则告诉您使用 .value() 的其他解决方案可能并不总是有效,并且不会执行任何操作。按标签选择是忽略实际文本并按元素本身选择的好方法。 数组索引将从 0 开始。如果您想要 value=11(Person1),您将在位置 getElementsByTagName('option')[10].selected 处获得它。 这是一篇旧帖子,但如果有人仍在寻找此类问题的解决方案,这就是我的想法: <script> document.addEventListener("DOMContentLoaded", function(e) { document.forms['AddAndEdit'].elements['list'].value = 11; }); </script> 注意:选项索引计数从 0 开始。这意味着第一个选项将从 0 开始索引。 document.querySelector(".add__btn").addEventListener("click", function(){ var index = 1; /*change option value here*/ document.querySelector(".add__type").options.selectedIndex = index; document.querySelector(".add__description").value = "Option Index"; document.querySelector(".add__value").value = index; }); <html> <div class="add__container"> <select class="add__type"> <option value="inc" selected>+</option> <option value="exp">-</option> </select> <input type="text" class="add__description" placeholder="Add description"> <input type="number" class="add__value" placeholder="Value"> <button class="add__btn"> Submit </button> </div> <h4> Default Option Value will be selected after pressing Submit </h4> 如果您按照接受的答案使用 mySelect.value = myOptionValue ,但它 still 似乎不起作用,那么请确保在调用代码时,选择元素已完全呈现并可交互 - 如果您在页面加载时调用代码,但它不是通过类似window.onload,DOMContentLoaded, qjuery 的 .ready() 或您的环境中使用的任何内容,那么您可能太早运行代码了。 要验证是否是这种情况,请在页面完全加载时通过开发工具手动运行代码,或使用 setTimeout() 延迟它。 Jquery 解决方案, $('select').prop('selectedIndex', 1);
突出显示该网页上的一些文本,然后单击文档上的任意位置。 您的选择将会消失。 当用户单击特定元素时,有没有办法防止这种行为......
如何在不使用value属性的情况下从select中选择选项?
有没有办法使用css选择器选择具有Value1的第一个选项。我正在开发使用 puppeteer 创建的自动化工具,我可以打开下拉菜单,但无法单击该选项...
如何使用 vue/inertia 使默认选项显示在下拉菜单中?
我正在使用 Inertia、Vue3 和 Laravel,但我似乎无法获得下拉菜单来自动填充第一个选项。它只是一片空白。这是我的代码: 我正在使用 Inertia、Vue3 和 Laravel,但我似乎无法获得下拉菜单来自动填充第一个选项。它只是一片空白。这是我的代码: <template> <form @submit.prevent="update"> <div> <div @change="update"> <input v-model="form.description" type="text" /> <input v-model="form.amount" type="text" /> <select v-model="form.frequency"> <option value="monthly">Monthly</option> <option value="quarterly">Quarterly</option> <option value="yearly">Yearly</option> </select> <input v-model="form.day_deposited" type="text" /> </div> </div> </form> </template> <script setup> import { useForm } from '@inertiajs/vue3' const props = defineProps({ income: Object, }) const form = useForm({ description: props.income.description, amount: props.income.amount, day_deposited: props.income.day_deposited, frequency: props.income.frequency, }) const update = () => form.put(`/income/${props.income.id}`) </script> 我尝试过使用 selected 和 form.defaults()。 你的组件.vue <template> <form @submit.prevent="update"> <div> <div @change="update"> <input v-model="form.description" type="text" /> <input v-model="form.amount" type="text" /> <select v-model="form.frequency" :value="form.frequency || 'monthly'"> <option value="monthly">Monthly</option> <option value="quarterly">Quarterly</option> <option value="yearly">Yearly</option> </select> <input v-model="form.day_deposited" type="text" /> </div> </div> </form> </template> <script setup> import { useForm } from '@inertiajs/vue3' const props = defineProps({ income: { type: Object, required: true, default: () => ({ frequency: 'monthly' // Set default here }) } }) const form = useForm({ description: props.income.description, amount: props.income.amount, day_deposited: props.income.day_deposited, frequency: props.income.frequency || 'monthly' // Set default here as fallback }) const update = () => form.put(`/income/${props.income.id}`) </script> 该解决方案提供了两种方法来确保默认值: 在选择元素中使用 :value 绑定和后备 在道具定义中设置默认值 在表单初始化中设置后备 下拉列表现在将始终显示一个值,无论是来自您的数据还是默认为“每月”。
将两个二维数组中的唯一列值打印为<option>标签,并在相交值上声明“selected”属性
我有两个二维数组,如下所示: $用户= [ ['用户名' => '蒂莫西'], ['用户名' => '弗雷德里克'] ]; $user2 = [ ['用户名' => '乔纳森'], ['用户名' => '弗雷德里克...
任何人都可以帮助我使用此类别过滤器吗? 类别 ... 任何人都可以帮助我使用此类别过滤器吗? <div class="d-flex align-items-center"> <label for="category-select" class="me-2">Category</label> <select name="categoryFilter" class="form-select" id="category-select"> <option value="">All Categories</option> @foreach (var category in Model.Categories) { var isSelected = Model.CategoryFilter == category.Value ? "selected" : ""; <option value="@category.Value" selected="" @isSelected>@category.Text</option> } </select> </div> 我收到此错误: 错误(活动)RZ1031 标签助手“选项”在元素的属性声明区域中不得包含 C#。 C:\Users\zaida\Desktop\Clinic Management Software\ClinicManagementSystem\Views\ProductManagement\Index.cshtml 55 控制器: [HttpGet] public async Task<IActionResult> Index(string searchTerm, string categoryFilter, string sortBy, int page = 1) { var productsQuery = _context.Products .Include(p => p.Category) .Include(p => p.Inventory) .Where(p => p.DeletedAt == null); // Filtering if (!string.IsNullOrEmpty(searchTerm)) productsQuery = productsQuery.Where(p => p.Name.Contains(searchTerm) || p.SKU.Contains(searchTerm)); if (!string.IsNullOrEmpty(categoryFilter)) productsQuery = productsQuery.Where(p => p.Category.Name == categoryFilter); // Sorting productsQuery = sortBy switch { "price_asc" => productsQuery.OrderBy(p => p.Price), "price_desc" => productsQuery.OrderByDescending(p => p.Price), "name_asc" => productsQuery.OrderBy(p => p.Name), "name_desc" => productsQuery.OrderByDescending(p => p.Name), _ => productsQuery.OrderBy(p => p.CreatedAt) }; // Pagination var totalItems = await productsQuery.CountAsync(); var products = await productsQuery .Skip((page - 1) * PageSize) .Take(PageSize) .ToListAsync(); var categories = await _context.Product_Category .Select(c => new SelectListItem { Text = c.Name, Value = c.Name }) .ToListAsync(); var viewModel = new ProductIndexViewModel { Products = products, CurrentPage = page, TotalPages = (int)Math.Ceiling((double)totalItems / PageSize), SearchTerm = searchTerm, CategoryFilter = categoryFilter, SortBy = sortBy, Categories = categories }; return View(viewModel); } [HttpPost] public async Task<IActionResult> IndexPost(string searchTerm, string categoryFilter, string sortBy, int page = 1) { return await Index(searchTerm, categoryFilter, sortBy, page); } [HttpGet] public async Task<IActionResult> AddProduct() { ViewBag.Categories = await _context.Product_Category.ToListAsync(); ViewBag.Discounts = await _context.Product_Discount.ToListAsync(); return View(); } 我试过了 <option value="">All Categories</option> @foreach (var category in Model.Categories) { var isSelected = Model.CategoryFilter == category.Value ? "selected" : ""; <option value="@category.Value" selected="@isSelected" >@category.Text</option> } 但我必须进入搜索栏并按 Enter 才能使其工作 错误(活动)RZ1031 标签助手“选项”中不得包含 C# 元素的属性声明区域。 这个问题,你好像找到原因了(<option value="@category.Value" selected="" @isSelected>),问题涉及到selected属性,你需要把@isSelected放在""里面,修改后代码应该是这样的 <option value="@category.Value" selected="@isSelected">。 根据您的代码,似乎您想为 select 标签设置默认值,使用您的代码,您会发现它没有设置正确的默认值。如果使用F12开发者工具查看元素,可以看到每个选项都有selected属性,并且会选择最后一个选项作为默认值。 要解决这个问题,您可以修改代码如下:使用 asp-for 和 asp-item 绑定选择标签并设置默认值。 <select asp-for="CategoryFilter" name="categoryFilter" class="form-select" id="category-select" asp-items="Model.Categories"> <option value="">All Categories</option> </select> 输出如下: 但我必须进入搜索栏并按 Enter 才能使其工作 您的意思是要在更改所选选项后过滤数据吗?如果是这样,您可以使用 select 元素更改事件来提交表单。 尝试使用以下代码: Index.cshtml:在form标签中,我们可以使用method属性来指定表单如何提交(get或post),并使用asp-action属性来指定将提交到哪个action方法。 @model Net9MVCSample.Models.ProductIndexViewModel @{ ViewData["Title"] = "Home Page"; } <form id="myform" asp-action="Index" method="get"> <div class="d-flex align-items-center"> <label for="category-select" class="me-2">Category</label> <select asp-for="CategoryFilter" name="categoryFilter" class="form-select" id="category-select" onchange="Submitform()" asp-items="Model.Categories"> <option value="">All Categories</option> </select> </div> <div> Output: @ViewData["selectvalue"] </div> </form> @section Scripts { <script> function Submitform(){ document.getElementById("myform").submit(); } </script> } 家庭控制器: public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } [HttpGet] public async Task<IActionResult> Index(string searchTerm, string categoryFilter, string sortBy, int page = 1) { var categories = new List<SelectListItem>() { new SelectListItem { Text = "C1", Value="101" }, new SelectListItem { Text = "C2", Value="102" }, new SelectListItem { Text = "C3", Value="103" }, new SelectListItem { Text = "C4", Value="104" }, new SelectListItem { Text = "C5", Value="105" }, }; categoryFilter = categoryFilter ?? "103"; var viewModel = new ProductIndexViewModel { CategoryFilter = categoryFilter, Categories = categories }; ViewData["selectvalue"] = categoryFilter; return View(viewModel); } 型号: public class ProductIndexViewModel { public string CategoryFilter { get; set; } public List<SelectListItem> Categories { get; set; } } 更多详细信息,请参阅 ASP.NET Core 中表单中的标记帮助程序。 结果如下:更改所选选项后,会将表单提交给 Index action 方法,然后将过滤后的数据返回到页面。
我想在 HTML 选择中的箭头右侧添加填充 目前的样子。 我不想改变箭头的外观。只需要在右侧填充即可。 这...