1

状況はこちら

JSP ページに多くの入力フィールドを持つフォームがあります。入力テキスト フィールドの数は、以前のアクション クラスに基づいているため不明です。

フォームの送信時に、すべての入力テキスト フィールドが空かどうかを確認したい。すべてが空の場合、送信しないでください。それ以外の場合 (いずれにせよ、少なくとも 1 つのテキスト フィールドに入力する必要があります)、フォームを送信する必要があります。

私が試したJQuery:

$('#dataFieldMapping').submit(function() {
    if ($('input:text').is(":empty")) {
        alert("Empty!");
        preventDefault();
     }
});

( dataFieldMappingはフォームの ID です)。送信をクリックすると、「Empty!」というアラートが表示されます。すべてのテキスト フィールドが入力されている場合でも、常に。

NB : 送信ボタンがフォームの外にあります。だから私は使っていた

$('#dataFieldMapping').submit();

検証せずに。しかし、フォームを検証したい。

4

2 に答える 2

2

デモ

$('#dataFieldMapping').submit(function (e) {
    if (!$(this).find('input:text').filter(function () {
        return $.trim(this.value) != ""
    }).length) {
        alert("Empty!");
        e.preventDefault();
    }
});
于 2013-07-26T10:45:18.120 に答える
1

イベントオブジェクトで preventDefault を呼び出していませんpreventDefault。イベントオブジェクトで呼び出す必要があります。すべてのフィールドが空であることを確認しようとしている方法では、値ではなく子をチェックするため、正しい結果が得られません。

:empty 子 (テキスト ノードを含む) を持たないすべての要素を選択し、参照

$('#dataFieldMapping').submit(function(event) {
    lst = $('input:text').filter(function(){
         this.value != "";
     });
    if(lst.length)
    {
       alert("Empty!");
       preventDefault();
    }
});
于 2013-07-26T10:42:16.407 に答える