一个表单中的输入字段是一个提交按钮所需的,但不适用于其他表单?

时间:2016-06-25 13:20:49

标签: php jquery html5 forms validation

如何在一个表单中区分我的提交按钮的两个单独的操作,而一个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个领域,所以这里最好的解决方案可能是通用的和多功能的。

3 个答案:

答案 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;
&#13;
&#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。感谢