2

我的任务是在一个简单的联系表单上添加验证以阻止垃圾邮件。这里唯一的问题是所有表单处理都发生在 salesforce.com 方面。我没有处理表单的文件,所以我不能只添加简单的表单验证。

表单的操作如下所示:

<form action="https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">

我尝试做一些 javascript 验证,但无论如何表单仍然提交。我有一种感觉,我需要将表单的操作更改为我创建的新 php 页面。我可以在那里进行验证,然后如果通过,我需要告诉它以某种方式转到此表单操作并完成表单处理?

我尝试使用 jQuery 实现隐藏表单域的想法,您可以在其中放置一个只有机器人才能以某种方式填写的隐藏表单域。因此,如果该字段具有值,则发出警报它是垃圾邮件,但这不起作用!表格只是不断提交。

呃,不清楚,请帮忙谢谢!

=====编辑====

这里有什么问题?

我的按钮

<input type="button" id="submit" value="Submit">

我的jQuery

jQuery(文档).ready(函数() {

jQuery('#submit').click(function() {

    var human = $("#human").val();

    if(human == 4 ){
        $('#form_submit').submit();
    }

    else {
        alert('Please answer the validation question correctly.');
    }
});

});

我的表单操作:

<form id="form_submit" action="https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">

和我的“人类”领域:

<input  id="human" maxlength="20" name="human" size="30" type="text" />
4

2 回答 2

0

像这样的东西应该工作:

工作示例

您想防止表单提交时发生的默认事件。

所以当他们点击进入或提交时,你想preventDefault(),那么你就可以自由地做你想做的事。我以 ajax 为例,因为 ajax 很棒。

<form id="form_submit" method="POST">
<input type="text" name="email" value="" placeholder="for humans" id="email">
<input type="text" name="robots" value="" placeholder="for robots" id="human">
<input type="submit" value="GO!">

<script>
$("#form_submit").submit(function(e){
  // when the form is submitted:
  // if the value of #human isn't empty, its a robot
  if ($("#human").val() !== "") {
    alert('robot!');
    return false;
  }

  // other form validation you may want:
  if ($("#email").val() == ""){
    alert('missing email');
    return false;
  }

  // STOP THE FORM FROM SUBMITTING ON ITS OWN
  e.preventDefault();

  // do whatever else you have to do.
  $.ajax({
     url:"https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8",
     data:"field1=value1&field2=value2", // this depends on what your server-side wants
     type:"POST",
     beforeSend:function(){console.log('sending..');},
     error:function(response){console.log('error: ' + response);},
     success:function(response){console.log('success!');},
     complete:function(){console.log('finished.');}
  });
});
</script>
于 2013-05-26T00:05:53.483 回答
-1

将提交按钮更改为普通按钮。在 jQuery 中添加一个click方法来执行你的垃圾邮件逻辑。当你真的想提交时,你可以通过 jQuery 提交页面。

例子:

<form id="form_submit" action="https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method=" POST">

$("#submit").click(function() {
  if(!spam){
    $('#form_submit').submit();
  }
});
于 2013-05-25T22:42:30.037 回答