开发者问题收集

将 Jquery 自动完成的值检索到 Ajax 调用中

2018-05-04
1005

我在 index.php 页面中有一个 jquery 自动完成字段:

$html .= '<div class="ui-widget">
    <label for="tags">Tags:</label>
    <input id="tags" />
    <div id="tagsname"></div>
</div>';
$html .= "<script>
    jQuery.noConflict();
    jQuery(function () {
        var availableTags = [
            'ActionScript',
            'AppleScript',
            'Asp',
            'BASIC',
            'C'
            ];
            jQuery('#tags').autocomplete({
            source: availableTags
        });
    });
    jQuery(document).ready(function () {
        jQuery('#tags').on('change', function () {
            jQuery('#tagsname').html('You selected: ' + this.value);
        }).change();
        jQuery('#tags').on('autocompleteselect', function (e, ui) {
            jQuery('#tagsname').html('You selected: ' + ui.item.value);
        });
    });</script>";

我想在 ajax.js 文件中将值检索到我的 ajax 调用中:

jQuery.ajax({
        type: "GET",
        url: "setvalues.php",
        data: {"event": event}

调用由 setvalues.php 进行:

if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
    $_SESSION['event'] = $_GET['event'];

注意:ajax 函数在 onclick 时通过按钮调用。

这就是上下文。 我想要做的是从 Ajax 函数中的 jQuery 输入中获取值。

我尝试做的: 我已将此行:

event = jQuery('#tagsname').html(ui.item.value);

放入我的 ajax.js 文件中,就在调用之前获取我需要的值,但它不起作用。 我收到此错误:

Uncaught ReferenceError : ui is not defined

我想还有另一种方法可以获取我的输入的值,但我找不到如何操作。

注释 2:您可能会注意到我省略了一些行,例如在我的 ajax.js 文件中。这是为了清楚起见。

2个回答

只需在输入元素上使用 jQuery 的 val() 函数即可。我创建了一个简化的示例,其中输入的值显示在警报消息中。您可以在 Ajax 调用中执行相同操作。

jQuery.noConflict();
jQuery(function () {
    var availableTags = [
        'ActionScript',
        'AppleScript',
        'Asp',
        'BASIC',
        'C'
        ];
        jQuery('#tags').autocomplete({
        source: availableTags
    });
});
jQuery(document).ready(function () {
    jQuery('#tags').on('change', function () {
        jQuery('#tagsname').html('You selected: ' + this.value);
    }).change();
    jQuery('#tags').on('autocompleteselect', function (e, ui) {
        jQuery('#tagsname').html('You selected: ' + ui.item.value);
    });
});

// Click event handler of "Get value" button
jQuery("#getValue").click(function() {
  // Select input element and take it's value using jQuery's val() function
  var selValue = jQuery("#tags").val();
  alert("Selected value: " + selValue);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>

<div class="ui-widget">
    <label for="tags">Tags:</label>
    <input id="tags" />
    <div id="tagsname"></div>
</div>

<button type="button" id="getValue">Get value</button>
Vaidas
2018-05-04

要获取 div 值/文本,您应该尝试

let event = $('#tagsname').text();

设置值

$('element').text('some _value');

更新:

如果您想获取输入元素值,请使用 jquery val() 方法

$('input_element').val();

在您的情况下使用,

$("#tags").val();
BugHunter
2018-05-04