如何在一个表单中区分我的提交按钮的两个单独的操作,而一个SAVES数据到数据库(按原样),其他提交形式为有效请求,>>但<<根据 HTML5原生验证(我在HTML表单中使用“必需”属性)?
我的表单有66个字段,我不想在PHP后提交中验证它们(因为它太麻烦和耗时),或者在 JS BEFORE提交中验证它们全部(因为我不像JS那样敏捷,所以我在HTML5中使用“必需”和“类型”属性,这是一种非常方便且通用的验证方式(除了旧浏览器)。 但是,当使用保存按钮但没有使用“发送提交”按钮时,我找不到绕过“必需”属性的简单方法。你能帮忙建议一个解决方案吗?我想首选的方式是一些JS / jQuery方式,因为我无法确定在按下按钮之前会使用哪个按钮(这样我就可以创建一个或不需要字段)。
示例代码:
import socket
import sys
host='' # Symbolic name meaning all available interfaces
port=7777 #random port
#creating socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "socket created"
#binding
try:
sock.bind((host,port))
except socket.error,msg:
print "Bind failed,Error no:"+str(msg[0])+"error:-"+str(msg[1])
sys.exit()
print "Bind successful"
sock.listen(10)
print "Listening" # it means that if 10 connections are already waiting to be processed, then the 11th connection request shall be rejected.
conn, addr=sock.accept()#accept new connection
print "connected to "+str(addr[0])+":"+str(addr[1])
#receive from client
data=conn.recv(1024)
print "received-"+data
conn.sendall(data*2)
#terminate
conn.close()
sock.close()
当然我的形式是巨大的,因为它有66个领域,所以这里最好的解决方案可能是通用的和多功能的。
答案 0 :(得分:2)
这样的事情可能会让你开始:
$('#sub1').click(function() {
$('[name=A]').removeAttr('required');
$('[name=B]').removeAttr('required');
$('form').append('<input type="hidden" name="save" />');
$('form').submit();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
A: <input type="text" name="A" required /><br>
B: <input type="text" name="B" required /><br>
C: <input type="text" name="C" /><br>
<input id="sub1" type="button" name="save" value="Save">
<!--do not require anything-->
<input type="submit" name="send" value="Send for submission">
<!-- require everything-->
</form>
&#13;
答案 1 :(得分:1)
要在提交之前从所有代码中删除所需的属性,请将代码修改为:
$('#sub1').click(function() {
$('[required]').removeAttr('required');
$('form').append('<input type="hidden" name="save" />').submit();
});
jsFiddle Demo 显示效果正常
请注意,此答案还演示了jQuery方法的链接:$(tag).append().submit()
答案 2 :(得分:1)
我最终想出了类似的东西。 HTML:
<input type="submit" name="save" value="Save" onClick="removeRequired(this.form)">
JS(使用jQuery):
function removeRequired(form){
$.each(form, function(key, value) {
if ( value.hasAttribute("required")){
value.removeAttribute("required");
}
});
}
这是经过测试和运作的。它有这个不错的属性,我可以将函数保存在文件的其他地方,不要抓住正在执行它的php / html。 只有我想要的改进(可能还有其他人会感兴趣)就是消除jQuery,因为它只用于浏览表单中的每个输入元素,这对于纯JS来说似乎很容易。但是我找不到一个简单的方法,并且耗尽时间并使用上面的jQuery。感谢