0

我正在使用jQuery Form 插件对我的表单进行“ajax”提交,该表单由大约 4 个单选选项组成。但是,如果没有选择任何单选按钮,我希望表单不提交。

到目前为止,这是我的尝试,得益于我在另一个 SO 答案和插件文档中找到的代码:

$(document).ready(function() {

    var options = { target: '#response',
                    type: 'get',
                    beforeSubmit: ischecked
                    }

    $('#answer').ajaxForm(options);

});


function ischecked(formData, jqForm, options){


    if ($('input:radio', $('#answer').is(':checked')))
    {
            return true;
    }
    else
    {
        return false;
    }
}

我确定回调ischecked正在执行(alert()s 将触发等),但代码本身似乎没有检测到没有选择单选按钮,并且继续提交表单。

这是 HTML 表单:

<form action="score.php" id="answer">
    <div style="margin-top: 0pt;" class="ans">
        <input type="hidden" value="127" name="question_id"/>
        <input type="hidden" value="f5043d5122cec6eb981c9a2fc7a0a653" name="user_id"/>
        <input type="hidden" value="36" name="question_key"/>
        <input type="hidden" value="37" name="next_key"/>

        <ul id="answers">
            <li>
                <label>
                    <input type="radio" value="464" name="answer_id"/> mod_rewrite                         </label>
            </li>
            <li>
                <label>
                    <input type="radio" value="465" name="answer_id"/> XML Site Map                         </label>
            </li>
            <li>
                <label>
                    <input type="radio" value="466" name="answer_id"/> Tiny URL                         </label>
            </li>
            <li>
                <label>
                    <input type="radio" value="467" name="answer_id"/> both a) and b)                         </label>
            </li>
            <li>
                <label>
                    <input type="radio" value="468" name="answer_id"/> a), b) and c) can all be used to make it easier for Google to index your dynamically generated URLs.                         </label>
            </li>
                            </ul>
    </div>
    <input type="submit" value="Submit Answer and Get Result" id="answer_submission"/>
</form>
4

2 回答 2

2

所有 jQuery 方法都返回一个数组,如果找不到匹配项,则返回一个空数组。如果用 'if' 检查一个 'empty' 数组,它将返回 true。

尝试

function ischecked(formData, jqForm, options)
{
    return $('input[name="answer_id"]:checked').length > 0; //Checking that the number of checked items are more than zero. 

    //You should also be able to use $('#answers input:checked'). 

}

编辑:作者发布 HTML 后更新了代码。

于 2009-07-21T23:12:57.510 回答
2

尝试这个:

function ischecked(formData, jqForm, options)
{
    return $('input[name=answer]').is('checked');
}
于 2009-07-21T23:29:15.463 回答