submit按钮事件onclick在用户用鼠标左键单击对象时触发。
onmousedown 当用户用任何鼠标按钮单击对象时触发。
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 form表单事件
onsubmit 当表单将要被提交时触发。 你在这个事件中处理就行了
onmousedown 当用户用任何鼠标按钮单击对象时触发。
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 form表单事件
onsubmit 当表单将要被提交时触发。 你在这个事件中处理就行了
解决方案 »
- javascript中用frameset
- 如何生成运单号?
- FF下iframe内容会缓存?
- 一个页面需要大家帮帮忙,感激不敬!!!
- 新手写的代码,有问题,请高手指导?
- 我用循环动态生成了100组radiobutton按钮,每组7个,请问如何判断那个radiobutton被选中?
- mysql子查询问题
- 关于innerhtml的问题
- 为什么在ns里面得到了frame却不能调用里面的函数呢?
- <form></form>中有几十个<input>,我想的重置按钮用的是<input type=image>
- 请问如何使用JavaScript在TEXTAREA的OnDrop事件中得到拖放的文件名?
- 请问用window.showModalDialog打开的窗口能不能再自动改变它的大小?如何实现?
<!--
function test(){
form1.submit();
document.getElementById("fdsa").innerHTML = "fdasfdas";
alert("b");
}
//-->
</script>
<form name="form1" method="post" action="saveguest.asp">
<textarea name="user_text" cols="32" rows="8" id="ok" ></textarea>
</form><A HREF="#" id="fdsa" ONCLICK="test()">?好</A>
<input type="submit">
</form>
<SCRIPT LANGUAGE="JavaScript">
<!--
function aa() {
alert(0);
return true;
}var f = document.forms["form1"];
var s = f.onsubmit;
var as = f.onaftersubmit;f.onsubmit = function(){
var r = s();
if (r && typeof as == "function") return as();
if (r && typeof as == "string") return (new Function(as))();
return r;
};
//-->
</SCRIPT>
function test()
{
alert("haha")
return true
}
function yaofunction()
{
alert("yours")
return true
}
</script>
<form name=form1 onsubmit="if(test()){return yaofunction()}">
<input type=submit>
</form>
var target = event ? event.target : this; // 您可以在这里定义想要的操作 alert('Submitting form to ' + target.action); // 提交表单
this._submit();
}// 捕获所有表单的提交操作
window.addEventListener('submit', newsubmit, true);// 如果一个脚本调用了 someForm.submit(), 它并不会触发事件 onsubmit,
// 因此我们需要重新定义 HTMLFormElement 类的 submit 方法。
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = newsubmit;它捕捉所有的form的submit事件,然后在之前做处理,我也就想要这个效果,但是在IE中这段代码是会出问题的。。大家有没有好的想法?谢谢。。
那么你可以通过捕获onclick事件来处理的
点击提交按钮时,onclick事件先于onsubmit事件发生,并可以阻止onsubmit事件发生
于是你可以通过判断是否点击了提交按钮来控制事态的发展测试例
<script>
document.onclick = foo;function foo() {
var el = event.srcElement;
alert(el.tagName+":"+el.type);
if(el.type == 'submit') {
alert(el.form.name);
return false;
}
if(el.tagName == 'FORM') {
return false;
}
}
</script><form name=f1 onsubmit='return foo()'>
<input type=text name=t value='a'>
<input type=submit>
</form>
<form name=f2>
<input type=text name=t value='a'>
<input type=submit>
</form>
我的想法是,用一个全局的javascript变量(初始化=0)来判断是否按下了按钮,捕捉所有按钮的鼠标点击事件/enter事件,如果变量=1就弹出警告,并不让事件继续。通常我们有2种方法处理提交:
1,用普通按钮,在button.onclick事件中处理好一些事情后调用form.submit()提交。
2,用submit按钮,在form.onsubmit事件中处理一些事情。然后系统会提交。
正常来说,在这里(onclick/onsubmit)如果我们在处理成功的话会return true, 否则会return false.在IE中:
第一种情况事件的触发顺序:button.onclick-->form.submit()
第二种情况事件的触发顺序:form.onsubmit()-->直接提交,注意,并不会显示调用form.submit()那么问题在,在我们并不知道是否有处理onclick/onsubmit事件的情况下,我应该在哪里来使这个变量=1?如果是第一种情况,我们应该在调用form.submit()的时候处理,我们需要捕捉到form.submit()事件,先标志变量=1,然后才处理原来的submit().这样的话,如果再次调用按钮的点击/enter事件,我就可以警告用户,因为系统已经提交了一次,这里并不需要理会onclick事件是否成功处理。
如果是第二种情况,它并不会显现的运行form.submit()事件,所以我们必须在form.onsubmit()事件后加上标志变量=1才行,有一个特殊的地方是:如果有onsubmit事件,同时如果用户输入有误,那么调用onsubmit()事件会return false,这种情况我们是允许用户在正确输入后多次提交的,我们必须处理这个意外。问题就在捕捉所有form.submit()和所有form.onsubmit()事件,然后在原来事件后加上自己的处理。附代码(仅供参考,大家觉得有问题的地方烦请提出来,有待改进!):
var button_click_flag=0;
var oldSubmit,oldOnSubmit;//********************************************************************************
// add all buttons' on mouse down event to control button only be clicked one time
//********************************************************************************
function control_buttons_to_click_one_time()
{
for(var i=0; i < document.forms.length; i++)
{
var objForm = document.forms[i];
// objForm.submit = foo;
if ( objForm.submit != null )
{
oldSubmit = objForm.submit;
objForm.submit = function ( e ) {
button_click_flag=1;
oldSubmit( e );
};// alert(objForm.submit);
}
if ( objForm.onsubmit != null )
{
oldOnSubmit = objForm.onsubmit;
objForm.onsubmit = function ( e ) {
// window.setTimeout('test1()', 10000);
if (oldOnSubmit( e )==false)
{
alert("onsubmit false");
return false;
}
else
{
button_click_flag=1;
alert("onsubmit true");
return true;
}
};// alert(objForm.onsubmit);
}
else
{
objForm.onsubmit = function ( e ) {
button_click_flag=1;
alert("no submit, added.");
return true;
}; } // Run through elements and disable buttons
for(var j = 0; j < objForm.length; j++)
{
var objElement = objForm.elements[j];
var strElementType = objElement.type.toLowerCase();
if(strElementType == "submit" || strElementType == "button")
{
objElement.onmousedown=function()
{
return dis();
}
objElement.onkeypress=function()
{
return dis();
} }
}
}
}// while button clicked, alert warning.
function dis()
{
// alert("dis");
if (button_click_flag==0)
{return true;}
else{
alert(' System is processing \r\n Please do not SUBMIT/CLICK BUTTON time after time.');
return false;}
}// on page onload, add button's control
function addOnloadEvent(fnc){
if ( typeof window.addEventListener != "undefined" )
window.addEventListener( "onload", fnc, false );
else if ( typeof window.attachEvent != "undefined" ) {
window.attachEvent( "onload", fnc );
}
else {
if ( window.onload != null ) {
var oldOnload = window.onload;
window.onload = function ( e ) {
oldOnload( e );
window[fnc]();
};
}
else
window.onload = fnc;
}
}// on window load, add event to all buttons, and re-control all form.submit()
// and form.onsubmit().
addOnloadEvent(control_buttons_to_click_one_time);