我的印象是,我可以通过执行此$(this).val();并将onchange参数应用于选择字段来获取选择输入的值。
$(this).val();
onchange
它似乎只有在我引用ID时才有效。
我怎么用这个做呢?
试试这个
$('select').on('change', function() {alert( this.value );});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select><option value="1">One</option><option value="2">Two</option></select>
您也可以使用onchange事件-
function getval(sel){alert(sel.value);}
<select onchange="getval(this);"><option value="1">One</option><option value="2">Two</option></select>
我的印象是,我可以得到一个选择的值通过执行此操作输入$(this). val();
如果你不显眼地订阅(这是推荐的方法),这是有效的:
$('#id_of_field').change(function() {// $(this).val() will work here});
如果您使用onselect并将标记与脚本混合,则需要传递对当前元素的引用:
onselect
onselect="foo(this);"
然后:
function foo(element) {// $(element).val() will give you what you are looking for}
查找jQuery网站
超文本标记语言:
<form><input class="target" type="text" value="Field 1"><select class="target"><option value="option1" selected="selected">Option 1</option><option value="option2">Option 2</option></select></form><div id="other">Trigger the handler</div>
JAVASCRIPT:
$( ".target" ).change(function() {alert( "Handler for .change() called." );});
jQuery的例子:
要向所有文本输入元素添加有效性测试:
$( "input[type='text']" ).change(function() {// Check input( $( this ).val() ) for validity here});
尝试事件委托方法,这在几乎所有情况下都有效。
$(document.body).on('change',"#selectID",function (e) {//doStuffvar optVal= $("#selectID option:selected").val();});
这对我有帮助。
对于选择:
$('select_tags').on('change', function() {alert( $(this).find(":selected").val() );});
对于单选/复选框:
$('radio_tags').on('change', function() {alert( $(this).find(":checked").val() );});
这就是我的工作。尝试了所有其他没有运气:
<html> <head><title>Example: Change event on a select</title> <script type="text/javascript"> function changeEventHandler(event) {alert('You like ' + event.target.value + ' ice cream.');} </script> </head> <body><label>Choose an ice cream flavor: </label><select size="1" onchange="changeEventHandler(event);"><option>chocolate</option><option>strawberry</option><option>vanilla</option></select></body> </html>
取自Mozilla
你可以试试这个(使用jQuery)-
$('select').on('change', function(){alert( this.value );});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <select><option value="1">Option 1</option><option value="2">Option 2</option><option value="3">Option 3</option><option value="4">Option 4</option></select>
或者你可以像这样使用简单的Javascript
function getNewVal(item){alert(item.value);}
<select onchange="getNewVal(this);"><option value="1">Option 1</option><option value="2">Option 2</option><option value="3">Option 3</option><option value="4">Option 4</option></select>
$('#select_id').on('change', function(){alert(this.value); //or alert($(this).val());}); <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <select id="select_id"><option value="1">Option 1</option><option value="2">Option 2</option><option value="3">Option 3</option><option value="4">Option 4</option></select>
对于所有选择,调用此函数。
对于只有一个选择:
$('#select_id')
请注意,如果这些不起作用,可能是因为DOM尚未加载并且您的元素尚未找到。
要修复,请将脚本放在正文末尾或使用文档就绪
$.ready(function() {$("select").on('change', function(ret) {console.log(ret.target.value)}})
jQuery(document).ready(function(){ jQuery("#id").change(function() {var value = jQuery(this).children(":selected").attr("value");alert(value); });})
箭头函数的作用域与函数不同,this.value将给箭头函数未定义。修复使用
this.value
$('select').on('change',(event) => {alert( event.target.value );});
我想补充一下,谁需要完整的自定义标头功能
function addSearchControls(json) {$("#tblCalls thead").append($("#tblCalls thead tr:first").clone());$("#tblCalls thead tr:eq(1) th").each(function (index) {// For text inputsif (index != 1 && index != 2) {$(this).replaceWith('<th><input type="text" placeholder=" ' + $(this).html() + ' ara"></input></th>');var searchControl = $("#tblCalls thead tr:eq(1) th:eq(" + index + ") input");searchControl.on("keyup", function () {table.column(index).search(searchControl.val()).draw();})}// For DatePicker inputselse if (index == 1) {$(this).replaceWith('<th><input type="text" id="datepicker" placeholder="' + $(this).html() + ' ara" class="tblCalls-search-date datepicker" /></th>'); $('.tblCalls-search-date').on('keyup click change', function () {var i = $(this).attr('id'); // getting column indexvar v = $(this).val(); // getting search input valuetable.columns(index).search(v).draw();}); $(".datepicker").datepicker({dateFormat: "dd-mm-yy",altFieldTimeOnly: false,altFormat: "yy-mm-dd",altTimeFormat: "h:m",altField: "#tarih-db",monthNames: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],dayNamesMin: ["Pa", "Pt", "Sl", "Ça", "Pe", "Cu", "Ct"],firstDay: 1,dateFormat: "yy-mm-dd",showOn: "button",showAnim: 'slideDown',showButtonPanel: true,autoSize: true,buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",buttonImageOnly: false,buttonText: "Tarih Seçiniz",closeText: "Temizle"});$(document).on("click", ".ui-datepicker-close", function () {$('.datepicker').val("");table.columns(5).search("").draw();});}// For DropDown inputselse if (index == 2) {$(this).replaceWith('<th><select id="filter_comparator" class="styled-select yellow rounded"><option value="select">Seç</option><option value="eq">=</option><option value="gt">>=</option><option value="lt"><=</option><option value="ne">!=</option></select><input type="text" id="filter_value"></th>'); var selectedOperator;$('#filter_comparator').on('change', function () {var i = $(this).attr('id'); // getting column indexvar v = $(this).val(); // getting search input valueselectedOperator = v;if(v=="select")table.columns(index).search('select|0').draw();$('#filter_value').val("");}); $('#filter_value').on('keyup click change', function () {var keycode = (event.keyCode ? event.keyCode : event.which);if (keycode == '13') {var i = $(this).attr('id'); // getting column indexvar v = $(this).val(); // getting search input valuetable.columns(index).search(selectedOperator + '|' + v).draw();}});}}) }
jQuery获取在Change事件上使用的选择html元素的值
演示和更多示例
$(document).ready(function () {$('body').on('change','#select_box', function() {$('#show_only').val(this.value);});});
<!DOCTYPE html><html><title>jQuery Select OnChnage Method</title><head><script src="https://code.jquery.com/jquery-3.3.1.min.js"></script></head><body><select id="select_box"><option value="">Select One</option><option value="One">One</option><option value="Two">Two</option><option value="Three">Three</option><option value="Four">Four</option><option value="Five">Five</option></select><br><br><input type="text" id="show_only" disabled=""></body></html>
让我分享一个我使用BS4、Thymeleaf和Spring Boot开发的示例。
我使用了两个SELECT,其中第二个(“子主题”)由基于第一个(“主题”)的选择的AJAX调用填充。
首先,胸腺叶片段:
<div class="form-group"><label th:for="topicId" th:text="#{label.topic}">Topic</label><select class="custom-select"th:id="topicId" th:name="topicId"th:field="*{topicId}"th:errorclass="is-invalid" required><option value="" selectedth:text="#{option.select}">Select</option><optgroup th:each="topicGroup : ${topicGroups}"th:label="${topicGroup}"><option th:each="topicItem : ${topics}"th:if="${topicGroup == topicItem.grp} "th:value="$\{\{topicItem.baseIdentity.id}}"th:text="${topicItem.name}"th:selected="$\{\{topicItem.baseIdentity.id==topicId}}"></option></optgroup><option th:each="topicIter : ${topics}"th:if="${topicIter.grp == ''} "th:value="$\{\{topicIter.baseIdentity.id}}"th:text="${topicIter.name}"th:selected="$\{\{topicIter.baseIdentity?.id==topicId}}"></option></select><small id="topicHelp" class="form-text text-muted"th:text="#{label.topic.tt}">select</small></div><!-- .form-group --> <div class="form-group"><label for="subtopicsId" th:text="#{label.subtopicsId}">subtopics</label><select class="custom-select"id="subtopicsId" name="subtopicsId"th:field="*{subtopicsId}"th:errorclass="is-invalid" multiple="multiple"><option value="" disabledth:text="#{option.multiple.optional}">Select</option><option th:each="subtopicsIter : ${subtopicsList}"th:value="$\{\{subtopicsIter.baseIdentity.id}}"th:text="${subtopicsIter.name}"></option></select><small id="subtopicsHelp" class="form-text text-muted"th:unless="${#fields.hasErrors('subtopicsId')}"th:text="#{label.subtopics.tt}">select</small><small id="subtopicsIdError" class="invalid-feedback"th:if="${#fields.hasErrors('subtopicsId')}"th:errors="*{subtopicsId}">Errors</small></div><!-- .form-group -->
我正在迭代存储在模型上下文中的主题列表,显示所有组及其主题,然后显示所有没有组的主题。BaseIdent是一个@Embedded复合键BTW。
现在,这是处理更改的jQuery:
$('#topicId').change(function () {selectedOption = $(this).val();if (selectedOption === "") {$('#subtopicsId').prop('disabled', 'disabled').val('');$("#subtopicsId option").slice(1).remove(); // keep first} else {$('#subtopicsId').prop('disabled', false)var orig = $(location).attr('origin');var url = orig + "/getsubtopics/" + selectedOption;$.ajax({url: url,success: function (response) {var len = response.length;$("#subtopicsId option[value!='']").remove(); // keep firstfor (var i = 0; i < len; i++) {var id = response[i]['baseIdentity']['id'];var name = response[i]['name'];$("#subtopicsId").append("<option value='" + id + "'>" + name + "</option>");}},error: function (e) {console.log("ERROR : ", e);}});}}).change(); // and call it once defined
Change()的初始调用确保它将在页面重新加载时执行,或者如果后端的一些初始化已经预选了一个值。
顺便说一句:我正在使用“手动”表单验证(参见“is-有效”/“is-无效”),因为我(和用户)不喜欢BS4将非必需的空字段标记为绿色。但这就是这个Q的范围,如果你有兴趣,那么我也可以发布它。
仅与js
let select=document.querySelectorAll('select')select.forEach(function(el) {el.onchange = function(){alert(this.value); }})
$('#select-id').change(function() {console.log($(this).val());});
我有一个例子来帮助新的想法。希望对大家有帮助
$('#editpricelist_box').change(function ($e){$('input[name="edit_unit_price"]').val(parseFloat(this.val()).toFixed(2));console.log(this.val());});