1

次の HTML フォームがあります。

<form id="ChartsForm">
    <div id="dateoptions">
        <p>Until date: <input type="date" name="until_date" value="Until date"></p>
        <p>Since date: <input type="date" name="since_date" value="Since date"></p>
    </div>
    <div class="insightsoptions">
        <input id="newLikes" class="insightsbuttons" type="submit" name="submit" value="Daily new likes">
        <input id="unlikes" class="insightsbuttons" type="submit" name="submit" value="Daily unlikes">
    </div>
</form>

および次の JQuery スクリプト:

$(function () {
    $("#newLikes").one('click', function () {
        $.ajax({type:'GET', url: 'newLikes.php', data:$('#ChartsForm').serialize(), success:
            function(response) {
                alert(response);
                $("#dailyNewLikes").html(response);
            }});
        return false;
    });
    $("#newLikes").on('click', function(){
        $(this).toggleClass('green');
        $('#dailyNewLikes').toggle();
    });

そもそも入力「until_date」と「since_date」が空かどうかを確認するにはどうすればよいですか。空の場合はスクリプトを停止してから ajax 呼び出しを実行し、ユーザーに間違いを警告して、入力がはもう空ではありません。私は使用する必要があります.one()。で試してみました。blur()機能しますが、効果はありません...

4

3 に答える 3

5

使用する代わりにone()、成功時にハンドラーを削除できます。後で関数を 1 つだけ削除する必要がある場合は、名前空間付きのイベント(または無名関数ではなく名前付き関数) を使用できます。次のようなことができます。

$("#newLikes").on('click', function () {

    var until = $('#dateoptions input[name="until_date"]').val();
    var since = $('#dateoptions input[name="since_date"]').val();

    if (until == "" || since == "") {
        alert('Error; until date or since date is missing.');
        return;
    }

    $.ajax({
        type:'GET',
        url: 'newLikes.php',
        data: $('#ChartsForm').serialize(),
        success: function(response) {
            $("#dailyNewLikes").html(response);
            $("#newLikes").off('click');
        }
    });
});
于 2013-05-09T15:20:58.267 に答える
1
<script type="text/javascript">
if (document.forms["form_name"]["date_field_name"].value == "" || document.forms["form_name"]["date_field_name"].value == "1970-01-01") 
{
        alert('you missed to give date.');
        return false;
}
</script>

この場合、フォームに名前を付ける必要があります

于 2014-07-08T15:54:37.547 に答える