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'でチェックすると、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 に答える