我对Javascript非常陌生,最近才开始尝试使用jquery。 我有一个Javascript函数,当它在我的项目中单独使用时,可以完美地运行。如下所示... *更新*这两个函数在<input>
标签之后声明,但添加了jquery代码后仍然抛出相同的错误document.getElementById("name_first")为null
。
<script type="text/javascript">
function printSymbol(symbol) { document.getElementById('name_first').value
+= symbol; };
function deleteSymbol() { document.getElementById('name_first').value
= document.getElementById('name_first').value.substr(0, document.getElementById('name_first').value.length
- 1); };
</script>
然而,当我将我的jQuery添加到相同的元素中时,我的现有JavaScript函数返回错误:document.getElementById("name_first")为空。
这个jQuery函数可以正常工作,并声明如下。
<script type="text/javascript">
$(document).ready(function() {
$("input[type=text]").autoSuggest("search_data.php", {selectedItemProp: "name", searchObjProps: "name", minChars: 2});
});
</script>
:::::更新::::::
我使用以下Actionscript代码从Flash键盘调用printSymbol函数,这个方法运行良好。
getURL("javascript:printSymbol('" + evnt.data + "');");
我已经按照之前建议的方法尝试使用以下jQuery函数来完成此操作。
<script type="text/javascript">
$(document).ready(function() {
$("input[type=text]").autoSuggest("search_data.php", {selectedItemProp: "name", searchObjProps: "name", minChars: 2});
function printSymbol(symbol) {
$('name_first').append(symbol)
};
function deleteSymbol() {
$('name_first').text( $('name_first').text().substr(0, $('#name_first').text().length - 1))
};
});
</script>
然而,我不知道这是否有效,因为我无法使用当前使用
getURL("javascript:printSymbol('" + evnt.data + "');");
调用的Flash键盘来调用这些函数。我该如何外部调用新的jQuery函数?希望这对您有所帮助,非常感谢您迄今为止的帮助:)
更新:
请参见下面的完整更新代码(包括HTML)。
<?php session_start(); ?>
<?php require_once('Connections/db.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>None</title>
<!-- Include Javascript functions and css files -->
<link href="autoSuggest.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"</script>
<script type="text/javascript" src="jquery.autoSuggest.js"</script>
<script type="text/javascript">
$(document).ready(function() {
$("#name_first").autoSuggest("search_data.php", {selectedItemProp: "name", searchObjProps: "name", minChars: 2});
});
</script>
</head>
<body>
<form action="" method="get" name="form1" target="_self" id="form1">
<input name="name_first" type="text" id="name_first" value="" size="25" maxlength="50" />
</form>
<script type="text/javascript">
function printSymbol(symbol) {
$("#name_first").val($("#name_first").val() + symbol);
}
function deleteSymbol() {
$("#name_first").val($("#name_first").val().substr(0,$("#name_first").val().length
- 1));
}
</script>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="582" height="241">
<param name="movie" value="images/KB_NoNum.swf" />
<param name="quality" value="high" />
<embed src="media/KB_With_Space.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="582" height="241"> </embed>
</object>
</body>
</html>
使用BASSISTANCE的自动完成进行新更新。
我现在使用的代码是带有自动完成插件的(不再是autosuggest)。
<script>
$().ready(function() {
$("#name_first").change().autocomplete("data_search.php", {
width: 260,
selectFirst: false
});
});
</script>
<script type="text/javascript">
function printSymbol(symbol) {
$("#name_first").val($("#name_first").val() + symbol);
}
function deleteSymbol() {
$("#name_first").val($("#name_first").val().substr(0,$("#name_first").val().length
- 1));
}
</script>
当使用普通键盘时,自动完成功能可以很好地从数据库中提取数据。
但是,当使用我的屏幕键盘并调用printSymbol函数时,文本会输入到文本字段中,但它不会触发自动完成......困惑
看起来这个自动完成插件必须使用keypress函数才能操作,所以我又陷入了困境。
jQuery函数的更新(不起作用)
<script>
$(document).ready(function() {
$('.selector').bind('autocompletechange', function(event, ui) {
$("#name_first").change().autocomplete("data_search.php", {
width: 260,
selectFirst: false
});
});
});
</script>
使用http://jquery-ui.googlecode.com/svn/tags/1.8rc1/ui/jquery-ui.js进行更新
所使用的代码
<script>
$(document).ready(function() {
$("input").autocomplete({
source: "search_data.php"});
});
</script>
这个函数可以正常使用物理键盘,但是来自屏幕键盘的输入不能触发它:(我猜想需要使用keypress事件。
}).keydown(function(e) {
改为}).change(function(e) {
,那可能会起作用... - Blair McMillan