我在IE中遇到this.value
的问题(7-9)。
我使用这段代码:
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$(".inputbox").keyup(function(){
value = this.value;
$("#searchRe").load("suggestionSearch.php?value=" + value);
});
});
</script>
这适用于Firefox和Chrome,但不会在IE中将“value”传递给“suggestionSearch.php”。我认为value = this.value
是个问题。请帮帮我:)。
注意:.inputbox
是一个文本框。
答案 0 :(得分:5)
因为您已经在使用jQuery,所以只需尝试使用jquery来获取值,使用此行
var value = $(this).val()
jQuery处理任意浏览器行为非常好。
修改强>
这是一个适用于IE的快速解决方案,您可以根据自己的需要进行修改。
答案 1 :(得分:2)
我已经尝试过你的代码并且似乎运行良好;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
</head>
<body>
<input type="text" class="inputbox" />
<div id="searchRe"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js" ></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$(".inputbox").keyup(function(){
value = this.value;
$("#searchRe").load("s.php?value=" + value);
});
});
</script>
</body>
</html>
这是我的php临时代码(因为你还没有指定你的代码)
<?php
echo $_GET['value'];
?>
您能告诉我们更多信息吗? (例如,从php文件返回什么样的数据)
修改强>
替换此
$("#searchRe").load("s.php?value=" + value);
这一个
$("#searchRe").load("s.php?value=" + encodeURIComponent(value));
请注意函数encodeURIComponent,请关注this link以获取更多信息。
答案 2 :(得分:2)
您的网页上是否有id = "value"
的元素?在这种情况下,IE将为它创建一个名为value
的全局变量,并拒绝将全局变量值分配给其他变量。
如果发生这种情况,解决方案就像
一样简单<script language="javascript" type="text/javascript">
$(document).ready(function(){
$(".inputbox").keyup(function(){
var value = this.value;
$("#searchRe").load("suggestionSearch.php?value=" + value);
});
});
</script>
(请注意value
前面的 var )。无论如何,这是你应该做的。
答案 3 :(得分:1)
您可以骑行活动并使用它来获取所需的数据。以下是示例代码:
<input class="inputbox" type="text" value="-default-" />
<script>
function changeHandler(event) {
console.log("changeHandler: ",event.target.value);
}
function keyPressHandler(event) {
console.log("keyPressHandler: ",event.target.value);
}
function keyDownHandler(event) {
console.log("keyDownHandler: ",event.target.value);
}
function keyUpHandler(event) {
console.log("keyUpHandler: ",event.target.value);
}
$(function(){
$(".inputbox")
.on("change",{},changeHandler)
.on("keypress",{},keyPressHandler)
.on("keydown",{},keyDownHandler)
.on("keyup",{},keyUpHandler);
})
</script>
调整输入字段并单击按键“s”后的控制台结果:
LOG: keyDownHandler: -default-
LOG: keyPressHandler: -default-
LOG: keyUpHandler: -default-s
LOG: changeHandler: -default-s
因此,可以通过事件本身获取所需数据(在绑定事件时,如果需要,还可以使用任何其他数据作为第二个{}参数。
注意:输入字段实际模糊(焦点丢失)后会触发“更改”事件。
P.S。你的“onkyeup”处理程序可能是这样的:
function(event){
$("#searchRe")
.load("suggestionSearch.php?value=" + event.target.value);
}
答案 4 :(得分:1)
尝试将请求参数作为参数传递,而不是修改URL。
// arguement ----------v
$("#searchRe").load("suggestionSearch.php", {value: this.value});
完整代码:
$(document).ready(function(){
$(".inputbox").keyup(function(){
$("#searchRe").load("suggestionSearch.php", {value: this.value});
});
});
还要确保ajax cache
设置为false
,
$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
答案 5 :(得分:1)
你试过这个吗?
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$(".inputbox").keyup('', function(){
var value = $(this).val();
$("#searchRe").load("suggestionSearch.php?value=" + value);
});
});
</script>
我刚刚添加了Event Data
(可能不需要,谁知道),声明var value
并更改了将值设为$(this).val()
的方法。
答案 6 :(得分:0)
对于此问题,您需要附加而不是加载
StrTemp = "<ul>"
$.each(function(value){
StrTemp += "<li><a id='" + value + "'>" + value + "</a></li>";
})
StrTemp += "</ul>"
$("#searchRe").append(StrTemp);
此代码适用于IE和其他
最好的问候
答案 7 :(得分:-2)
你也可以提醒($(this).serialize());