我的印象是,我可以通过执行这个$(this).val()来获取一个选择输入的值;并将onchange参数应用到select字段。

只有在引用ID时,它才会起作用。

我怎么用这个。


当前回答

这对我来说很管用。我尝试了其他所有方法,但都没有成功:

<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

其他回答

试试这个,

$('选择')。On ('change', function() { 警报(这。值); }); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本> <选择> <选项值= " 1 " > < / >选项之一 <选项值= " 2 " > 2 > < /选项 < /选择>

你也可以引用onchange event-

函数getval(选取) { 警报(sel.value); } <选择onchange = " getval(这个);" > <选项值= " 1 " > < / >选项之一 <选项值= " 2 " > 2 > < /选项 < /选择>

让我分享一个我用BS4、thymleaf和Spring boot开发的例子。

我使用了两个select,其中第二个(“subtopic”)由基于第一个(“topic”)选择的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="" selected
                 th: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="" disabled
                th: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 -->

我对存储在模型上下文中的主题列表进行迭代,显示所有组及其主题,然后显示所有没有组的主题。 顺便说一句,BaseIdentity是@Embedded复合键。

现在,这里是处理更改的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 first 
                    for (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-valid”/“is-invalid”),因为我(和用户)不喜欢BS4将非必需的空字段标记为绿色。但这超出了这个问题的范围,如果你感兴趣,那么我也可以张贴它。

尝试事件委托方法,这几乎适用于所有情况。

$(document.body).on('change',"#selectID",function (e) {
   //doStuff
   var optVal= $("#selectID option:selected").val();
});

箭头函数的作用域与函数不同, 这一点。Value将为箭头函数提供undefined。 固定使用

$('select').on('change',(event) => {
     alert( event.target.value );
 });

jQuery获取在Change事件上使用select 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>