如何在IE7中制作标签提交表单,同时进行表单上设置的所有表单验证?
如果我只是提交document.forms[0].submit();
,则忽略表单验证。
修改: 每个人都喜欢告诉我使用输入标签...这将汇总表格,但不会在我的情况下工作,这就是为什么我询问按钮标签......
<form action="my/script" onsubmit="return ValidateFunc();">
<button> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>
答案 0 :(得分:9)
首先有一个提交类型为
的按钮<input type="submit" value="submit" />
在表单标记中,将onsubmit()事件包含为
<form
action="/path/to/server/side/script"
name="testform"
onsubmit="return validate()"
>
如果表单验证通过,validate()
函数应返回true
,如果验证失败,则false
函数应返回function validate(){
if(...){//valid
return true;
}else{//not valid
return false;
}
}
。
e.g。
<form action="my/script" onsubmit="return ValidateFunc();">
<button type="submit"> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>
修改强> 始终指定按钮类型。如果没有指定,在IE中它默认为“按钮”,而在Chrome和Firefox中它默认为“提交”。
{{1}}
如果您需要正确的答案,将来在您的问题中包含更多详细信息。
答案 1 :(得分:2)
我只是通过向按钮添加type="submit"
来解决这个问题。
<button>Submit</button>
未在IE7中提交。
<button type="submit">Submit</button>
确实在IE7中提交。
答案 2 :(得分:1)
我猜验证只能从“提交”按钮识别“提交”事件。
您应该使用“提交”输入而不是“按钮”输入。然后验证机制将能够拦截提交事件。你可以在validation.submit函数中调用form.submit。
以下是代码:
<form id="theForm">
...
<input type="submit" value="submitMe"/>
</form>
在Javascript中:
$('#theForm').validate({
...
submitHandler: function() {
// do some trick here
...
// submit the form
$('#theForm').submit();
}
});
答案 3 :(得分:1)
我使用jquery提交按钮。如果我使用直接javascript,如果绕过验证设置。 Jquery的表单提交在提交之前运行验证。
经过额外的研究后,即使使用type =“submit”,标签也无法在旧版IE中提交表单。
答案 4 :(得分:0)
我正在使用(虚拟/不可见)输入字段,在此表格中使用此css定位绝对:
<input class="dummy" type="submit" />
.dummy {
position:absolute;
bottom:0px;
right:0px;
padding:0px;
margin:0px;
border:0px;
font-size:0px;
line-height:0px;
}
请避免使用display:none或visibility:hidden或width:0px等。仅使用我提供的此css。
答案 5 :(得分:0)
我在IE11中遇到了与另一种形式的提交按钮相同的问题:
<form id="form1">
...
</form>
<form id="form2">
...
<button type="submit" form="form1">OLA KE ASE</button>
...
</form>
你可以用javascript来解决它,我用通用的方式用jQuery做到了。
$(document).ready(function() {
$('button[type=submit]').on('click', function() {
if ($(this).attr('form') != '') {
document.getElementById($(this).attr('form')).submit();
}
});
});