1

CFINPUTタグがありCFFORMます。ページを投稿せずに動的に範囲を設定したい。フォームフィールドをその場で動的にロードするために、ページ全体にいくつかのAJAX呼び出しがあります。

<cfselect id="this" name="this" bind="cfc:Data.getThis()" bindonload="true" />

<cfselect id="that" name="that" bind="cfc:Data.getThat({p1})" />

<cfselect id="theOther" name="theOther" bind="cfc:Data.getTheOther({p1}, {p2})" />

<cfdiv 
    id="maxQty" 
    bind="cfc:Data.getMaxQty({itemId})" />

<cfinput 
    type="text" 
    id="qty" 
    name="qty" />

<cfdiv 
    id="itemId" 
    bind="cfc:Data.getItemId({this}, {that}, {theOther})" />

上記CFFORMでは、基本的に範囲のminValueを「1」に設定し、範囲のmaxValueをの値に設定したいと思いますcfc:Data.getMaxQty({itemId})

これは可能ですか?どうすればいいですか?

4

1 に答える 1

1

簡単な答えは「いいえ」です。ただし、非常に簡単な回避策があります。バインディングを使用して、最大にしたい値をaCFDIVまたはCFINPUT非表示フィールドにロードし、フォームを送信するときに最小/最大値を検証するJavaScript関数でその値にアクセスするだけです。

<script type="text/javascript">
<!--

function validateForm() {
    var maxQty = document.getElementById("maxQty").innerHTML;

    if (document.myForm.add_item_1.value < 1 || document.myForm.add_item_1.value > maxQty) {
        alert("Quantity must be an integer value between 1 and " + maxQty);

        return false;
    }

    return true;
}

//-->
</script>

<cfform name="myForm" method="post" action="myFormAction.csm" onsubmit="return validateForm();">

<cfdiv 
    id="maxQty" 
    bind="cfc:Data.getMaxQty({itemId})" />
于 2010-04-29T16:33:13.633 に答える