按钮单击功能无法在IE上运行?

时间:2009-12-09 13:13:10

标签: jquery ajax

我有下面的代码,一切正常但IE上的按钮点击功能我已经玩过了,但似乎仍无法使其正常工作。

$(document).ready(function() 
{
$("img").hide();
$("#logo").show();
document.getElementById("fname").focus();
$(".button").click(function() 
{    
    postdata();
});         

})

function postdata()
{   

var parameters = 'fname=' + document.getElementById("fname").value + '&lname=' + document.getElementById("lname").value;
httpxml.onreadystatechange = stateck;       
httpxml.open('POST', '../checking/submitcheck.php', true);
httpxml.setRequestHeader('Content-Type', "application/x-www-form-urlencoded");
httpxml.setRequestHeader('Content-Length', parameters.length);
httpxml.send(parameters);

function stateck() 
{

if(httpxml.readyState==4)

{ 
    if (httpxml.responseText.indexOf("Successful") >= 0)
    {   
        $("#result").show("slow");
        $("#result").html("Project request has successfully been sent");
        $("#result").removeClass("result_error");

    }
    else if (httpxml.responseText.indexOf("Fail") >= 0)
    {
        $("#result").html("One or more errors have occured, please fix and submit again");
        $("#result").addClass("result_error");
        $("#result").show("slow");              

    }   
}

}   
}

有什么想法吗?

谢谢=)

编辑:提交按钮代码

<input type="submit" name="button" class="button" id="button" value="Submit" disabled="disabled" onclick="return false;" />

4 个答案:

答案 0 :(得分:3)

不是按钮点击不起作用,而是事件处理程序中的代码。

由于您决定使用jQuery,因此没有理由比强大的jQuery选择器更喜欢getElementById。此外,您不应该以艰难的方式进行Ajax调用,而应使用$.post方法。您遇到的问题可能与Ajax请求代码有关。

答案 1 :(得分:1)

由于你已经在使用jQuery,所以你也可以一直使用它......

尝试将postdata()函数更改为此...

function postdata(){
  $.ajax({
    type: "POST",
    dataType: "text",
    url: "../checking/submitcheck.php",
    data: "fname=" + $("#fname").val() + "&lname=" + $("#lname").val(),
    cache: false,
    success: function(resp){
      if (resp.indexOf("Successful") >= 0){
        $("#result").show("slow");
        $("#result").html("Project request has successfully been sent");
        $("#result").removeClass("result_error");
      }
      else if (resp.indexOf("Fail") >= 0){
        $("#result").html("One or more errors have occured, please fix and submit again");
        $("#result").addClass("result_error");
        $("#result").show("slow");                            
      }
    }
  });
}

这样jQuery会为您完成所有浏览器检查,并为创建http帖子创建正确的对象。在此处查看有关它的更多详细信息http://docs.jquery.com/Ajax/jQuery.ajax#options

如果您不打算在其他任何地方重用postdata()函数,则没有任何理由您不能将所有上述代码放入为$(“。button”)声明的匿名函数中。 click()事件。

答案 2 :(得分:0)

你是如何构建对象httpxml的?您是否确保将new ActiveXObject("Microsoft.XMLHTTP")用于IE(而不是new XMLHttpRequest())?

答案 3 :(得分:0)

以这种方式测试,因为可能是问题不在点击事件中

使用Javascript:

$("#myForm").bind("submit", function(ev) { return false; } );

$("#button").click(function(ev) {
   ev.stopPropagation();
   try{
     postdata();
   }
   catch(ex){
     $("#debug").append("<div>"+ex.description+"</div>");
   }
}); 

HTML:

<form id="myForm">
...
  <input type="submit" name="button" class="button" id="button" value="Submit" disabled="disabled" />

...
</form>

<pre id="debug"></pre>