1

this.value在 IE(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 中将“值”传递给“suggestionSearch.php”。我认为value = this.value是问题。请帮我 :)

注意:.inputbox是一个文本框。

4

8 回答 8

5

因为您已经在使用 jQuery,所以只需尝试使用 jquery 来获取值,使用这一行

var value = $(this).val()

jQuery 可以很好地处理任意浏览器行为。

编辑

这是一个适用于 IE 的快速解决方案,您可以根据自己的需要进行修改。

http://jsfiddle.net/FeRsB/

于 2012-10-25T08:10:21.440 回答
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,点击此链接了解更多信息。

于 2012-10-31T14:51:47.880 回答
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>

(注意var前面的value)。无论如何,这是你应该做的。

于 2012-11-01T10:20:00.903 回答
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

因此,可以通过事件本身获得所需的数据(如果需要,还可以在绑定事件时作为第二个 {} 参数加上任何附加参数。

注意:在输入字段实际模糊(失去焦点)后触发“更改”事件。

ps 你的“onkyeup”处理程序可能是这样的:

    function(event){
            $("#searchRe")
                  .load("suggestionSearch.php?value=" + event.target.value);
    }
于 2012-10-31T13:00:12.483 回答
1

尝试将请求参数作为参数传递,而不是修改 URL。

//                        arguement ----------v
$("#searchRe").load("suggestionSearch.php", {value: this.value});

完整代码:

$(document).ready(function(){
   $(".inputbox").keyup(function(){
       $("#searchRe").load("suggestionSearch.php", {value: this.value});
   });
});

还要确保将 ajaxcache设置为false,

$.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
});
于 2012-10-31T14:29:28.317 回答
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()

于 2012-11-05T22:38:53.253 回答
0

对于这个问题,你想要追加而不是加载

 StrTemp  = "<ul>"
 $.each(function(value){
  StrTemp += "<li><a id='" + value + "'>" + value + "</a></li>";
 })
 StrTemp += "</ul>"
 $("#searchRe").append(StrTemp);

此代码适用于 IE 和其他

最好的祝福

于 2012-10-30T14:03:35.250 回答
-2

你也可以 alert($(this).serialize());

于 2012-10-25T08:15:30.033 回答