我有下面的代码,一切正常但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;" />
答案 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>