可能是一个简单的解决方案,所以我有点尴尬,但 JS 并不是我的强项,所以我想我会问。
我正在使用Jquery表单 http://jquery.malsup.com/form/用于提交一组复选框以满足我正在制作的活动策划应用程序的要求的插件。
如果没有“要求”的数组键,我无法使我的验证预提交回调拒绝表单。我知道在 php 中我可以简单地使用 array_key_exists 之类的东西或者只是检查 isset() ,但我不确定 js 中的同源是什么。代码如下。
<form id="choose_reqs" method="post" action="http://www.domain.com/generator/chooseReqs/" enctype="multipart/form-data">
<p>I'm planning on getting:</p>
<?php foreach($_SESSION['event']->opt_r as $r){?>
<span style="display:block; width:120px; padding:4px; border:1px #ccc solid;"><input type="checkbox" value="<?=$r;?>" name="requirement[]"/><?=$r;?></span>
<?php }?>
<input type="submit" name="event_chosen" value="Next" />
</form>
然后加载表单后运行的相关js:
function eventTypeChosen(responseText, statusText, xhr, $form) {
var options = {
target: '#app',
beforeSubmit: formSubmitCheck,
success: reqsChosen
};
setNav();
$('#choose_reqs').ajaxForm(options);
}
function setNav(){
$('#start_over').click(start);
}
function formSubmitCheck(formData, jqForm, options){
if(formData.hasOwnProperty('requirement')){
alert('Please check at least one requirement');
return false;
}else{
$(jqForm).fadeOut(200);
return true;
}
}
显然 .hasOwnProperty() 方法以及我使用它的方式有问题。