【发布时间】:2014-09-28 09:52:24
【问题描述】:
我有一个作为文件输入的表单:
<form method="post" id='careerform' action="<?php echo Yii::app()->createUrl('site/career'); ?>" enctype="multipart/form-data">
<input type="file" name="cv" id="cv">
<input type="button" id="submitcareer" class="btn btn-default pull-right" data-toggle="modal" data-target=".bs-example-modal-sm" value="Submit">
</form>
当用户点击提交时,表单将被检查验证:
<script type="text/javascript">
$(document).ready(function() {
$('#careerform').bootstrapValidator({
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
cv: {
validators: {
notEmpty: {
message: 'CV is required.'
},
file: {
extension: 'doc,docx,pdf,zip,rtf',
type: 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/rtf,application/zip',
maxSize: 5 * 1024 * 1024,
message: 'The selected file is not valid, it should be (doc,docx,pdf,zip,rtf) and 5 MB at maximum.'
},
}
}
}
});
$('#submitcareer').click(function(){
$('#careerform').data('bootstrapValidator').validate();
if($("#careerform").data('bootstrapValidator').isValid()){
$('#modalbtn').click();
}
});
});
</script>
然后会出现一个模态,该模态包含一个包含 google recaptcha 输入的表单:
<div class="modal-body">
<form method="post" id="modalform" enctype="multipart/form-data">
<?php
require_once(Yii::app()->basePath.'/extensions/recaptchalib.php');
$publickey = "...";
echo recaptcha_get_html($publickey);
?>
<button type="submit" class="btn btn-primary" id="modalsubmit" >Submit</button>
</form>
</div>
<div class="modal-footer">
<script type="text/javascript">
$(document).ready(function() {
$("#modalsubmit").click(function(event){
event.preventDefault();
$.ajax({
type:"post",
url:"<?php echo Yii::app()->createUrl('site/verify'); ?>",
data:$("#modalform").serialize(),
dataType: 'json',
async: false,
success:function(response){
if(response == 2){
$('#careerform').data('bootstrapValidator').validate();
if($("#careerform").data('bootstrapValidator').isValid()){
$('#careerform').submit();
}
}
}
});
});
});
</script>
</div>
如果用户正确输入验证码,则 ajax 响应将为 2,则应提交第一个表单。
当我得到响应值 = 2 时,我的问题是第一个表单没有提交,那么这里的问题是什么?还有另一种方法可以做我想做的事吗?
【问题讨论】:
-
对于初学者来说,如果可以通过禁用 JS 来绕过 reCaptcha,那么它的意义何在?
-
将
$('#submitcareer').click(function() {更改为$('#submitcareer').click(function(e){ e.preventDefault(); -
@mplungjan 结果相同
-
@IbrahimAshShohail 没有响应结果,表单不会被发送到服务器,所以如果你绕过它,什么都不会发生
-
服务器的响应是什么?
标签: javascript php jquery ajax forms