当前位置: 首页 > 知识库问答 >
问题:

onChange方法不工作与Thymeleaf选择选项

郎睿
2023-03-14

我正在做一个Spring Boot Thymeleaf项目。我有side-bar.html文件,其中的片段用于其他超文本标记语言文件,以避免重写代码。

侧栏中有一个select选项元素。html,其中填充了客户端ID。

<div id="sidebar-menu" th:fragment="side-bar-menu">
    <select id="clientId" name="clientId" class="selectpicker" data-show-subtext="true" data-live-search="true" onchange="setCltVal(this);">
            <option value="">Choose or Type Client code</option>
            <option th:each="aclient : ${session.assignedClientList}" th:value="${aclient.cltcd+'|'+aclient.cname}" th:text="${aclient.cltcd+' - '+aclient.cname}"></option>
    </select>
</div>

我已经在索引中包含了这个片段。html文件。

<!-- sidebar menu -->
<div th:replace="fragments/side_bar :: side-bar-menu"></div>

现在,我尝试在选择任何一个select选项时进行ajax调用,以将它们保存在session对象中。为此,我在索引中提供了一个js脚本。html

<script th:inline="javascript">
console.log($('#clientId'));
function setCltVal() {
    var clientData = $("#clientId option:selected");
    $.ajax({
        type: "POST",
        url: "setClientData",
        data: "clientData="+clientData,
        success: function(response){
            ...
           },
        error: function(error){
            ...
           }
        });
    }
</script>

但当选择选择选项时,永远不会调用此脚本。

我也试过:

<script type="text/javascript">
$('#clientId').on("change", function() {
    var clientData = $("#clientId").val();
    $.ajax({
        type: "POST",
        url: "setClientData",
        data: "clientData="+clientData,
        success: function(response){
           ...
          },
        error: function(error){
           ...
          }
        });
    });
</script>

我想通过这段代码实现的是:当选择任何一个select选项时,将调用脚本,从而对控制器进行ajax调用,并将客户机数据保存在session对象中。

我参考了JavaScript Thymeleaf-selectonchange、Thymeleaf-select选项和jquery:Call函数,但没有得到预期的结果。

我将真诚地感谢任何帮助。

共有3个答案

岳研
2023-03-14

尝试使用th:onchange事件,而不是仅使用onchange事件。喜欢

th:onchange="'setCltVal(this)'";
凌和颂
2023-03-14

应等待文档加载后再设置事件。将JS调用包装到document ready函数中,然后重试

<script type="text/javascript">
 $(function () {
     $('#clientId').on("change", function() {
            console.log($('#clientId option:selected').val());
            // your ajax call
     });
});

</script>
赵朝
2023-03-14

带有Thymeleaf选择选项和jquery的onChange方法

$("table #libelleArticle").change(function() { 
  // Add action of select option
  $("#prix").val("2000 euro");		
});
 <td th:field="*{listArticles}">
   <select class="custom-select" id="libelleArticle" name="libelleArticle" >
      <option value=""> Selectionner un article </option>
      <option th:each="article : ${listArticles}" id="selectArt" th:value="${article.libelleArticle}" th:text="${article.libelleArticle}" />
   </select>
</td>
 
<td> 
  <input type="text" class="form-control" id="prix" name="prix" /> 
</td>
 类似资料:
  • 我的村庄模型; 我的地图类迁移; 我的“村庄”方法在“村庄管理员”课上; 后果 “选择”方法只需要提到,但不需要列返回NULL。 如果我删除

  • 我试图在表中使用日期选取器添加和删除行。默认情况下,日期选取器不起作用。但是我点击了添加行按钮,它已经工作了。我找不到解决方案。 请参考小提琴位置。

  • 问题内容: 如果我只需要2/3列,而是查询而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会有所下降? 如果我确实选择了*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,则I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在

  • 我对此感到困惑。我搜索了2个多小时,无法理解发生了什么。 我有一个列表视图,我希望项目(行)是可选的。为了实现这一点,我设置了一个选择器作为行布局的背景。 ListView在片段中是这样定义的。xml布局文件: 选择器(bg_row_contact.xml)如下: 我的行布局(row_contact.xml)如下所示: 现在,我有一个自定义适配器,在其中我这样做是为了在用户单击该行时将项目标记为选

  • 我使用的是一个具有多个属性的select元素。这只适用于Firefox和Chrome,但不适用于IE9/IE10或IE11。有什么建议让它也适用于IE浏览器吗?看起来IE不接受字符=>

  • 正如您在代码中所看到的,我希望“&”指的是“.app”,因为它在其他地方以及node_sass中都起作用。 这是样式化组件中的一个bug还是我遗漏了什么?下面是复制问题的codesandbox链接:- https://codesandbox.io/s/jolly-visvesvaraya-ibjd8?file=/src/app.js