可能是一个简单的解决方案,所以我有点尴尬,但JS并不是我的强项所以我想我会问。
我正在使用Jquery 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()方法显然有问题,以及我如何使用它。
答案 0 :(得分:2)
function formSubmitCheck(formData, jqForm, options){
if($('input[name=requirement[]]').fieldValue().length==0){
alert('Please check at least one requirement');
return false;
}else{
$(jqForm).fadeOut(200);
return true;
}
}
答案 1 :(得分:1)
您在评论中链接的表单插件页面:
formData是一个对象数组,表示将发送到服务器的每个字段的名称和值...
尝试将formData对象打印到控制台,以便验证其结构。