我正在使用自动填充功能
http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
下面我有两页index.php
和ajx_page.php
<form name="send_coup_ajx_form" id="send_coup_ajx_form" method="post">
<select name="member_type" id="member_type">
<option value="customer_type">Customer</option>
<option value="BPartner_type">Business Partner</option>
</select>
<input type="text" name="sel_rad" id="resultant_text" />
<input type="submit" name="submit" value="go" />
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#resultant_text").autocomplete("ajx_page.php", {
width: 260,
matchContains: true,
//mustMatch: true,
//minChars: 0,
//multiple: true,
//highlight: false,
//multipleSeparator: ",",
selectFirst: false
});
});
</script>
以下代码
<?php
$select_type = $_GET['member_type'];
$type = $_GET['sel_rad'];
?>
当我输入文本框时,它会给我一个错误
Notice: Undefined index: member_type in ajx_page.php on line 2
这意味着member_type
不会进入该页面。
当我评论所有这些代码并将以下代码放在ajx_page.php
<?php
echo "Name1\n";
echo "Name2\n";
echo "Name3\n"
?>
显示自动填充功能列表。但是当我想获得该对象member_type
的值时,它会说错误..
所以如何使用此自动完成插件传递其他值
我已将图像添加到覆盖问题@veeTrain
答案 0 :(得分:1)
我认为传入bassistance自动完成的附加参数,唯一的方法是修改autocomplete.js文件。我之前做过类似的事情,但这种方法非常难以编码。发布在下面供您参考(它在第376行附近):
$.ajax({
// try to leverage ajaxQueue plugin to abort previous requests
mode: "abort",
// limit abortion to this input
port: "autocomplete" + input.name,
dataType: options.dataType,
url: options.url,
data: $.extend({
member_type: ($("#member_type").length != 1)?$("#member_type").val():-1,
q: lastWord(term),
limit: options.max
}, extraParams),
success: function(data) {
var parsed = options.parse && options.parse(data) || parse(data);
cache.add(term, parsed);
success(term, parsed);
}
});
我只在原始代码中添加了一行,第10行:member_type: ...
。
请注意,如果在该页面上找不到该对象以防止javascript错误,则传入“-1”。
希望它有所帮助!
答案 1 :(得分:1)
我不确定自动完成插件是否打算处理这种情况。
但是,如果你想手动将这些值传递到你的php脚本中,那么它将非常简单(至少在你只尝试发送两个字段的情况下)。
var memberType = $("#member_type>option:selected").val();
var selRad = $("#resultant_text").val();
$("#resultant_text").autocomplete("ajx_page.php?member_type="+memberType+"&sel_rad="+selRad, {
//...
但这可能不是您正在寻找的答案。
更新:我很高兴发送值的语法对您有用。
看起来你打印出重叠的ids - 你的意思是'大胆'吗?显然,您没有使用正确的分隔符来创建第二个自动完成建议。我不确定自动完成处理程序想要在项目之间描述什么。未定义可能会显示,因为找不到您的某个项目。您应该使用浏览器的开发人员工具来调试发送的内容。
此外,如果您想要选项的文字而不是value
,那么您需要访问.text()
而不是.val()
选择下拉列表。
更新:This post可能会对自动填充功能的预期发表意见。