在Ajax Live Search中复制/粘贴数据

时间:2016-10-26 18:46:11

标签: php jquery ajax search live

我正在使用 Ehsan Abbasi的Ajax Live Search(ALS)

调用MySQL,PHP& jQuery在您键入时搜索并显示搜索建议结果(与流行的搜索引擎类似)。

我正在努力解决以下问题:

  1. 当用户复制数据并将其粘贴到表单中,从而使实时搜索无意义时,将该数据传递到提交的表单的语法是什么?

  2. " onResultEnter"参考?用户点击输入按钮?

  3. " onAjaxComplete"参考?用户点击提交按钮?

  4. 以下是将这些问题纳入背景的相关工作。

    首先,我们初始化一些变量并通过PHP连接到我们的数据库:

    # Live search initialization.
    # --
    file_exists($_SERVER['DOCUMENT_ROOT'].'/als/core/Handler.php') ? require_once $_SERVER['DOCUMENT_ROOT'].'/als/core/Handler.php' : die('Handler.php not found');
    file_exists($_SERVER['DOCUMENT_ROOT'].'/als/core/Config.php')  ? require_once $_SERVER['DOCUMENT_ROOT'].'/als/core/Config.php'  : die('Config.php not found');
    
    use AjaxLiveSearch\core\Config;
    use AjaxLiveSearch\core\Handler;
    
    if (session_id() == '') {
        session_start();
    }
    
    $handler = new Handler();
    $handler->getJavascriptAntiBot();
    
    # Connect to database.
    # --
    require_once($_SERVER["DOCUMENT_ROOT"]."/connect.php");
    global $dbc;
    
    # Initialize required CSS and JavaScript files to be included.
    # --
    $additional_css = "<link href=\"/als/css/ajaxlivesearch.css\" rel=\"stylesheet\" type=\"text/css\" />";
    $additional_js = "<script type=\"text/javascript\" src=\"/als/js/ajaxlivesearch.js\"></script>";
    

    我们接下来会包含两种不同的表单来执行不相关的搜索:

    <!-- Model number search form -->
    
    <form role="form" id="productsSearch" action="search-models.php" method="get" class="search-form">
        <div class="input-group">
            <input type="text" name="model_number" id="models" class="form-control modelSearch" placeholder="Enter your model number">
            <input type="hidden" name="model_number" id="model_number">
            <span class="input-group-btn">
                <button type="submit" class="btn btn-default" onclick="return model_validator();">Go</button>
            </span>
        </div>
    </form>
    
    <!-- Part number search form -->
    
    <form onsubmit="return part_validator();" action="search-parts.php" role="form" method="get">
        <div class="input-group">
            <input type="text" name="part_number" id="parts" class="form-control partSearch" placeholder="Enter your part number">
            <input type="hidden" name="part_number" id="part_number">
            <span class="input-group-btn">
                <button type="submit" class="btn btn-default">Go</button>
            </span>
        </div>
    </form>
    

    请注意,模型搜索表​​单包含onclick事件以验证模型编号。同样,部件号搜索表单调用onsubmit事件来验证部件号。在ALS进入图片之前,这两个事件都在我们的自定义代码中。

    此外,我们在每个表单中都包含一个隐藏字段,以包含用户在ALS中选择的值,以便在提交给操作脚本时传递到表单中。

    这些隐藏字段值在与每种输入形式相关联的ALS函数中设置:

    <!-- Model search: ALS functions -->
    
    <script>
        jQuery(document).ready(function() {
            jQuery(".modelSearch").ajaxlivesearch({
    
                onResultClick: function(e, data) {
    
                    // Get the index 0 (first column) value.
                    var selectedOne = jQuery(data.selected).find('td').eq('0').text();
    
                    // Set the input value.
                    jQuery('#models').val(selectedOne);
    
                    // Hide the result.
                    jQuery("#models").trigger('ajaxlivesearch:hide_result');
    
                    // Set the hidden field value.
                    $('input[name=model_number]').val(selectedOne);
    
                },
    
                onResultEnter: function(e, data) {
    
                    // What does this refer to? The user hits the enter button?
    
                },
    
                onAjaxComplete: function(e, data) {
    
                    // What does this refer to? The user clicks a submit button?
    
                }
            });
        })
    </script>
    
    <!-- Part search: ALS functions -->
    
    <script>
        jQuery(document).ready(function() {
            jQuery(".partSearch").ajaxlivesearch({
    
                onResultClick: function(e, data) {
    
                    // Get the index 0 (first column) value.
                    var selectedOne = jQuery(data.selected).find('td').eq('0').text();
    
                    // Set the input value.
                    jQuery('#parts').val(selectedOne);
    
                    // Hide the result.
                    jQuery("#parts").trigger('ajaxlivesearch:hide_result');
    
                    // Set the hidden field value.
                    $('input[name=part_number]').val(selectedOne);
    
                },
    
                onResultEnter: function(e, data) {
    
                    // What does this refer to? The user hits the enter button?
    
                },
    
                onAjaxComplete: function(e, data) {
    
                    // What does this refer to? The user clicks a submit button?
    
                }
            });
        })
    </script>
    

    我非常感谢任何帮助排除语法的帮助,以获取用户从未知来源复制的数据&amp;粘贴到这些表单中的任何一个并传递到表单操作搜索脚本。同样可以欢迎onResultEnter和onAjaxComplete函数的任何亮点。

    如果我可以传递任何其他信息以协助排除故障,请告诉我们!

    最佳, 艾里

0 个答案:

没有答案