0

jQueryのDropkickでスタイル設定されたフォームが ありますが、フォームがスタイルを取得すると、送信ボタンを有効/無効にできません。JS検証は、Dropkickなしで期待どおりに機能します。

HTML:

<form method="get" id="dropkickform" action="">
    <select id="min" class="list">
        <option selected="selected" value="">Selection 1</option>
        <option value="1">100</option>
        <option value="2">200</option>
    </select>

    <select id="max" class="list">
        <option selected="selected" value="">Selection 2</option>
        <option value="1">500</option>
        <option value="2">600</option>
    </select>

    <input type="submit" value="Submit"/>
</form>

JS:

$('.list').dropkick();

$(document).ready(function () {
    $form = $('#dropkickform');
    $form.find(':input[type="submit"]').prop('disabled', true);
    $form.find(':input').change(function () {
        var disable = false;
        $form.find(':input').not('[type="submit"]').each(function (i, el) {
            if ($.trim(el.value) === '') {
                disable = true;
            }
        });
        $form.find(':input[type="submit"]').prop('disabled', disable);
    });
});

http://jsfiddle.net/L3FCV/

4

1 に答える 1

1

dropkick を適用するとselect、舞台裏で s が更新されないことがわかります。そのため、検証は機能しません ( selects には常に初期オプションが選択されています。firebug/chrome Web インスペクターを見て確認してください)。それ)。

http://jsfiddle.net/Qguh5/に近づくことができましたが、時々壊れます。

私が使用した:

$('.list').dropkick({
    change: function(value, label){
        var disable = true;

        $('.dk_option_current > a').each(function(){
            if($(this).data('dk-dropdown-value')){
                disable = false;
            } else {
                disable = true;
            }
        });

        $form.find(':input[type="submit"]').prop('disabled',disable);
    }
});

changeイベントはドロップキックのページに記載されています。

カスタムの外観のフォームが必要な場合は、 http://uniformjs.comを試してみることをお勧めします。ドロップキックほどきれいではないかもしれませんが、シナリオでははるかに使いやすいです。

于 2013-01-30T11:25:18.217 に答える