我只是想获取提交表单的操作链接, 但是点击提交警报未定义
$(document).on("submit","form",function(e){
e.preventDefault();
if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
{
setTimeout(function(){
alert($(this).attr("action"));
// $.post($(this).attr('action') , $(this).serialize() , function(data){
// $(".wholepage").html(data);
// });
},400);
}
});
HTML
<div class="well login">
<form id="reg" action="parts/background/regProcess.php" method="post">
<input placeholder="Choose an username" type="text" name="user"><br/><br/>
<input placeholder="Choose a password" type="password" name="pass1"><br/><br/>
<input placeholder="Input the password again" type="password" name="pass2"><br/><br/>
<input placeholder="Enter your E-mail address" type="text" name="email"><br/>
<input type="submit" class="last-button load" value="SUBMIT">
</form>
</div>
答案 0 :(得分:1)
您需要在超时功能之前存储$(this)
:
$(document).on("submit","form",function(e){
e.preventDefault();
var $this = $(this);
if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
{
setTimeout(function(){
var relPath = $this.attr("action");
var absPath = $this.prop("action");
alert(relPath);
// $.post($(this).attr('action') , $(this).serialize() , function(data){
// $(".wholepage").html(data);
// });
},400);
}
});
这是一个小提琴:http://jsfiddle.net/vMbHS/
答案 1 :(得分:1)
另一种解决方案是使用bind绑定this
。
$(document).on("submit","form",function(e){
e.preventDefault();
if($(this).children("input[type=submit]").hasClass("load") && $(this).children("input[type=submit]").hasClass("last-button"))
{
setTimeout((function(){
alert($(this).attr("action"));
// $.post($(this).attr('action') , $(this).serialize() , function(data){
// $(".wholepage").html(data);
// });
}).bind(this),400);
}
});
这将创建一个更易于维护的代码,因为该函数与父函数的变量松散紧密。