8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

将文本粘贴到表单中时加载数据

coder rock 3月前

112 0

我有一个搜索表单,当有人在其中输入内容时,它会做出反应。我希望它在粘贴内容时也能做出反应,可以吗?现在,粘贴的文本后面必须有一个空格。

我有一个搜索表单,当有人在其中输入内容时,它会做出反应。我希望它在粘贴内容时也能做出反应,可以吗?现在,粘贴的文本后面必须有一个空格。

<input type="text" name="search_text" id="search_text" placeholder="&#xf002;" class="fontAwesome" />

<div id="result"></div>
<script>
    $(document).ready(function () {
        load_data();
        function load_data(query) {
            $.ajax({
                url: "oSearch.php",
                method: "POST",
                data: { query: query },
                success: function (data) {
                    $("#result").html(data);
                },
            });
        }
        $("#search_text").keyup(function () {
            var search = $(this).val();
            if (search != "") {
                load_data(search);
            } else {
                load_data();
            }
        });
    });
</script>
帖子版权声明 1、本帖标题:将文本粘贴到表单中时加载数据
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由coder rock在本站《ajax》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 有一个得到良好支持的“粘贴”事件

  • 您可以使用 \'paste\' 事件,请参阅下文如何使用 jquery 监听多个事件

    function debounce(callback, delay) {
    var timeoutHandler = null;
    return function () {
        clearTimeout(timeoutHandler);
        timeoutHandler = setTimeout(function () {
            callback();
        }, delay);
    }
    }
    $('#search_text').on('keyup paste', debounce(function(e){
      console.log($('#search_text').val());
    }, 500));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
    <input type="text" name="search_text" id="search_text" placeholder="&#xf002;" class="fontAwesome">

    PS:我建议使用某种\'节流\'来避免每次键入时都进行 ajaxcall(粘贴也会触发键入),请参阅-> 如何延迟 .keyup() 处理程序直到用户停止输入?

  • 感谢您的意见。我尝试了键盘粘贴,但它在 Safari(iPhone)中仍然不起作用。

  • 我刚刚用 iphone 和 safari 测试过,你是对的,但对我来说它会触发,但 this.value 是空的,当再次粘贴时它只记录最后一个值,似乎有一些错误..

  • /ASP.NET 使用 jQuery AJAX 调用 SharePoint Rest Api 获取 \'401 (未授权)\'/请在授权部分'授权'中提供帮助:\'NTLM \' +btoa(用户名:密码) 添加项目...

    / ASP.NET 使用 jQuery AJAX 调用 SharePoint Rest Api 时获取 \'401 (未授权)\' /

    请帮助授权部分

    'Authorization': "NTLM " +btoa(username:password)
    
    Add Item to SharePoint List
    
    
    <h1>Add Item to SharePoint List</h1>
    
        Username:
        <br>
        Password:
        <br>
        Add Item
    
    
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#addItemForm').submit(function(event) {
                event.preventDefault(); 
    
                const siteUrl = 'https://your-sharepoint-site-url.com'; // Update with your SharePoint site URL
                const listTitle = 'YourListTitle'; // Update with your SharePoint list title
                const endpointUrl = `${siteUrl}/_api/web/lists/getbytitle('${listTitle}')/items`;
    
                const newItemData = {
                    'Title': 'New Item Title',
                    'Description': 'This is a new item added from an external application.'
                    // Add more properties as needed for your SharePoint list columns
                };
    
                const username = $('#username').val();
                const password = $('#password').val();
                const basicAuth = 'NTLM ' + btoa(username + ':' + password);
    
                $.ajax({
                    url: endpointUrl,
                    type: 'POST',
                    headers: {
                        'Accept': 'application/json;odata=verbose',
                        'Content-Type': 'application/json;odata=verbose',
                        'Authorization': "NTLM " +btoa(username:password)
                    },
                    data: JSON.stringify(newItemData),
                    success: function(data) {
                        console.log('New item created successfully:', data);
                        // Optionally, display a success message to the user
                    },
                    error: function(error) {
                        console.error('Error creating new item:', error);
                        // Optionally, display an error message to the user
                    }
                });
            });
        });
    </script>
    
  • 我可以通过添加节流/防抖功能来解决该错误,如果这对您也有效,请告诉我!

  • Aldo 3月前 0 只看Ta
    引用 8

    在控制台日志中,Safari 中一切正常。我无法让它与我的代码一起工作,我应该把防抖动函数放在哪里?

  • 我们有一个复杂的 Web 应用程序,通常通过 RedHat JBoss EAP 7.4 提供服务,我们正尝试将其与 Wildfly 26.1.3(javax → jakarta 之前的最新版本)一起使用。对于 UI,我们使用 Primefaces 13.0.8(...

    我们有一个复杂的 Web 应用程序,通常通过 RedHat JBoss EAP 7.4 ,我们正尝试将其与 Wildfly 26.1.3 (javax → jakarta 之前的最新版本)一起使用。对于 UI,我们使用 Primefaces 13.0.8 (最新版本)。

    相当 简单, 带有选项卡视图和一些动态内容, 无法使用 Wildfly 我仍在寻找解决方案。同样的 UI 适用于我们的 EAP 安装。

    以下是精简版:

    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                template="/WEB-INF/templates/minimal.xhtml">
    
    <ui:define name="body">
    
        <h:form>
            <p:tabView dynamic="true" cache="false">
                <p:tab title="Tab 1">
                    <h:inputText>
                        <p:ajax event="keyup" update="time" />
                    </h:inputText>
                    <h:outputText value="#{developer.timestamp}" id="time" />
                </p:tab>
                <p:tab title="Tab 2">
                    Content
                </p:tab>
            </p:tabView>
        </h:form>
    
    </ui:define>
    </ui:composition>
    

    相关部分是 <p:tabView dynamic="true" cache="false"> 我们在整个 UI 中使用它来允许复杂的选项卡视图在需要时快速呈现,而不是提前呈现。

    就上述示例而言,到目前为止,UI 无法与 Wildfly 配合使用(更新)。 但如果我简单地从 更改 dynamic="true" dynamic="false" 它就会开始工作。

    这里有一个小 GIF,显示了如果我输入一些数据会发生什么情况。右边的时间戳应该更新。但 dynamic="true" 它不起作用。

    enter image description here

    我错过了什么? 我一点头绪都没有……

    更新

    这似乎与部分状态保存有关。请参阅 https://github.com/da3x/PARTIAL_STATE_SAVING 以获取可重现的最小示例。

  • 在问题中发布的代码中,您只需在开头之后添加函数定义即可

  • 您可以尝试 13.0.7 吗?它能正常工作吗?然后继续回到 13.0.6 等,直到它开始工作。这将帮助我们缩小问题范围。此外,PrimeFaces 测试重现器也很棒,这样我就可以调试它了。

  • ddaa 3月前 0 只看Ta
    引用 12

    我有一个简单的 Laravel 应用程序用于任务管理。它包括一个带有四个字段的表单:一个用于 CSRF 令牌,两个用于 ID 的隐藏字段,以及一个用于获取任务标题的输入字段。要添加子字段,请执行以下操作:

    我有一个简单的 Laravel 应用程序用于任务管理。它包含一个包含四个字段的表单:一个用于 CSRF 令牌,两个用于 ID 的隐藏字段,以及一个用于获取任务标题的输入字段。

    为了提交表单,我使用了 AJAX。但是,我遇到了一个问题,即每个 AJAX 请求都会发送两次。此行为在应用程序中的所有 AJAX 请求中都存在。

    这是我的代码的简化版本:

    JS

    $(()=> {
          $('.add-card').one('click',function(e) {
              e.preventDefault(); 
              var form = $(this).closest('form')[0]; 
              let url = baseUrl + ":8000/api/task/store"
              let data = retrieveFormData(form)    
              let _token = data['csrf-token']             
              ajaxCRUD("POST", url, {...data},_token, (response) => {
                console.log(response);
              });
            });
    
          
    
    });
    
    function ajaxCRUD(method, url, data, token,successFunc) {
    $.ajax({
      type: method,
      url: url,
      data: data,
      beforeSend: function(xhr) {
        xhr.setRequestHeader('X-CSRF-TOKEN', token);
    },
      
      success: function (response) {
        if (successFunc) {
          successFunc(response);
        }
      },
      error: function (xhr, status, error) {
        console.error(xhr.responseText);
      },
    });
    }
    
    function retrieveFormData(form) {
      let formElements = $(form).find('input, select, textarea');
      let formData = {};
      formElements.each((index, element) => {
          let name = $(element).attr('name');
          let value = $(element).val();
          formData[name] = value;
      });
      return formData;
    }
    

    HTML:

    <div class="card  fit-content  px-1 py-2 position-absolute top-0 left-0 card-title-form" >
                                    <form action="" method="post" class="task-title-form">
                                        <input type="number" name="stage_id" class="form-control" value="{{$stage->id}}"  hidden>
                                        <input type="number" name="project_id" class="form-control" value="{{$project->id}}"  hidden>
                                        <input type="text" name="csrf-token" class="form-control" value="{{csrf_token()}}"  hidden>
                                        <input type="text" name="task_title" class="form-control" id="card-title" placeholder="Enter a title for this card...">
                                        <div class="my-2">
                                            <button class="btn btn-primary add-card"  >Add</button>
                                            <span class="btn font-14 close-title-form"><ion-icon name="close-outline"></ion-icon></span>
                                        </div>
                                    </form>
                                </div>
    

    尝试过但没有成功的解决方案:

    • p7

    • p8

    • p9

    • p10

  • 我可以尝试一下,但我认为这与 PrimeFaces 无关。我怀疑是某些设置不当——但到目前为止还没有找到。我们之前使用过 12.0.0,效果相同。

  • 您在哪里看到它们被发送了两次?您确定这不是 cors 预检,然后是常规请求吗?

  • 我尝试构建一个具有相同问题的最小示例 war 文件,并且它正常工作。似乎我们的 ear / war 设置中有些东西混淆了——很难找到。如果我找到原因,我会报告。

  • 我在控制台中收到了两个响应,表明请求被发送了两次。

  • ajaxCRUD 是否被调用了两次?

  • 这是好东西,让我审查一下然后回复您。

  • ajaxCRUD 已针对路由 'api/task/store' 调用一次,调用了两次。

  • 好的,这是 Mojarra 的一个错误。当我从 Wildfly 切换到独立 Jetty 时,我可以在 Mojarra 2.3.17 中重现该问题,但它在 2.3.18+ 中已修复。

    因此,如果您可以将 Wildfly Mojarra JAR 换到最新的 2.3.21,那么这个问题就应该得到解决。

返回
作者最近主题: