0
validate:function(section){
        var elements=this.sections.$sections.eq(section).data('elements') //reference elements within this section that should be validated
        var validated=true, invalidtext=["Fill the following areas:\n"]
        function invalidate(el){
            validated=false
            invalidtext.push("- "+ (el.id || el.name))
        }
        for (var i=0; i<elements.length; i++){
            if (/(text)/.test(elements[i].type) && elements[i].value==""){ //text and textarea elements
                invalidate(elements[i])
            }
            else if (/(select)/.test(elements[i].type) && (elements[i].selectedIndex==-1 || elements[i].options[elements[i].selectedIndex].text=="")){ //select elements
                invalidate(elements[i])
            }
            else if (elements[i].type==undefined && elements[i].length>0){ //radio and checkbox elements
                var onechecked=false
                for (var r=0; r<elements[i].length; r++){
                    if (elements[i][r].checked==true){
                        onechecked=true
                        break
                    }
                }
                if (!onechecked){
                    invalidate(elements[i][0])
                }
            }
        }
        if (!validated)
            alert(invalidtext.join('\n'))
        return validated
    },

フィールドが表示されているかどうかをチェックするコントロールをこの関数に追加したいと考えています。これをif行に追加しようとしましたが、うまくいきませんでした。

elements[i].style.display=="none"

入力ではなくテーブルを非表示にしていますが、それが理由でしょうか? このコントロールを追加する他の方法はありますか?

編集 ソリューション: elements[i].style.display!=="none"

4

1 に答える 1

0

elementsjquery オブジェクトではなく、DOM 要素の配列の ように見えます。isjquery オブジェクトで呼び出す必要があります。

$(elements[i]).is(":visible")

また、これはブール値を返すことに注意してください。それが であるかどうかを確認する必要はありません== true

于 2013-02-25T16:27:57.157 に答える