2013-03-22 71 views
0

我不想要type =“submit”,因为它改变页面 -
我正在提交通过ajax ..所以我使用type =“button “确定哪个按钮在HTML表单中被点击 - 不是提交类型

<input type="button" value="This is a submit button" name="submit1" onClick="submitMe(this.form)"> 
<input type="button" value="Another submit button" name="submit2" onClick="submitMe(this.form)"> 
<input type="button" value="Yet another submit button!" name="submit3" onClick="submitMe(this.form)"> 

但是,所有的按钮名称显示为通过表单变量 - 我期望只点击的按钮被传递,就像复选框或提交按钮...(如果它不选择 - 不通过它)

我该如何确定WHICH按钮被选中 - 我需要这个,因为根据按钮动作会有所不同。

使用原型'AJAX.UPDATER'来处理表单。

的JS看起来像这样...

function submitMe(frm) { 
    var div = 'msgDiv'; 
    var url = 'mypage.aspx'; 
    var pars = Form.serialize(frm); 
    var myAjax = new Ajax.Updater(div, url, { asynchronous:true, method:'post', parameters:pars }); 
} 

THX

回答

1

你应该使用observe种或on()方法,而不是正常onclick属性 - 为你的HTML给它“myForm会”的“click”事件会冒泡的id了从加个班

<input type="button" value="This is a submit button" class="submitbutton" name="submit1" > 
<input type="button" value="Another submit button" class="submitbutton" name="submit2" "> 
<input type="button" value="Yet another submit button!" class="submitbutton" name="submit3" > 

如果附加观察员的形式将按钮添加到父窗体中,并且可以查找通过使用findElement()方法对传递的事件进行点击所产生的按钮。在这种情况下,我会使用on()方法,因为您可以指定一个CSS选择器来限制事件处理的范围。否则,每次点击都会触发处理程序。

$('#myform').on('click','.submitbutton',function(event){ 
    var clickedbutton = event.findElement(); 

    //then you can fire your submitMe() function 
    submitMe(this); 
}); 
on()方法 this

是被观察

1

你可以做这样的事情:

​​

,然后在你的JS

submitMe(id){ 
    switch(id) 
    { 
    case 'a': 
    ----- 
    break; 
    case 'b': 
    ----- 
    break; 
    } 
} 
+0

问题是我已经通过表格... submitMe(this.form); submitMe(frm){variams = Form.serialize(frm);}。 ... } – jpmyob 2013-03-22 16:45:40

+0

mmm如果你只传递“this”,并在你的函数中取“form”和“id”? – Mikeroguez 2013-03-22 16:49:40

+0

类似 - submitMe(this.form,this.id)???? – jpmyob 2013-03-22 16:51:04

0

在HTML代码,你可以使用id属性,而不是名称和点击的按钮ID传递给函数的元素...

<input type="button" value="This is a submit button" id="submit1" onClick="submitMe(this.id)"> 
<input type="button" value="Another submit button" id="submit2" onClick="submitMe(this.id)"> 
<input type="button" value="Yet another submit button!" id="submit3" onClick="submitMe(this.id)"> 

然后在你的JS,你可以得到formId由...

function submitMe(eleId) { 
    var clickedButton = eleId // use it as you want 
    var frm = $(eleId).up('form'); // this will give the parent form 
    var div = 'msgDiv'; 
    var url = 'mypage.aspx'; 
    var pars = Form.serialize(frm); 
    var myAjax = new Ajax.Updater(div, url, { asynchronous:true, method:'post', parameters:pars }); 

}