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

快速回答是“不”。但是有一个非常简单的解决方法。只需使用绑定将您希望成为最大值的值加载到隐藏字段CFDIVCFINPUT隐藏字段中,然后在提交表单时验证最小/最大值的 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 回答