如果没有选择,请使用jQuery ajaxForm插件提交表单

时间:2009-07-21 23:08:08

标签: jquery forms callback ajaxform

我正在使用jQuery Form plugin对我的表单进行“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>

2 个答案:

答案 0 :(得分: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后更新了代码。

答案 1 :(得分:2)

试试这个:

function ischecked(formData, jqForm, options)
{
    return $('input[name=answer]').is('checked');
}