0

ボタンをクリックするとフォームが ajax 経由で送信されますが、まずすべてのテキスト入力が無効になっていることを確認したいと思います。私は次のことを試しましたが、要素が有効なままになっていると、console.log が返さdoneれますが、これは起こるべきではありません。

それぞれinput[type=text]が正しく入力されると、属性が取得されますdisabled="disabled"

jQuery

$('.vacancy-submit').click(function(){
        var isValid = false;
        $("input[type=text]").each(function(){
            if ( $(this).is('[disabled="disabled"]') ) {
                isValid = true;
            } else {
                isValid = false;
            }
        });
        if (!isValid){
            alert("Please fill in all the required fields (highlighted in red)");
            console.log('derp');
        } else {
            console.log('done');
        }
        return isValid;

        var company = $('input[name=company-title]').val();
        var location = $('input[name=location-title]').val();
        var term = $('input[name=term]:checked').val();
        var closedate = $('input[name=vacancy-date]').val();
        $.ajax({
            type:"post",
            url:"/assets/inc/add-vacancy.php",
            data:"company="+company+"&location="+location+"&term="+term+"&closedate="+closedate,
            success:function(data){
                console.log(data);
            }
        });
    });
4

2 に答える 2

3

すべての入力が無効になっているかどうかを確認するには、disabled-selectorを使用します

var isValid = $("input[type=text]:not(:disabled)").length == 0;
if (!isValid) {
    alert("Please fill in all the required fields (highlighted in red)");
    console.log('derp');
    return isValid;
} else {
    console.log('done');
}
于 2013-09-17T09:24:07.060 に答える
0

.each はコールバックであるため、すぐに返されます。返されないように each を変更する必要があります。

https://stackoverflow.com/a/6483430/1823684

于 2013-09-17T09:28:24.310 に答える