IE中的this.value问题

时间:2012-10-25 08:07:12

标签: jquery ajax internet-explorer

我在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是一个文本框。

8 个答案:

答案 0 :(得分:5)

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

var value = $(this).val()

jQuery处理任意浏览器行为非常好。

修改

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

http://jsfiddle.net/FeRsB/

答案 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());