我可以使用 AJAX 调用在 CFINPUT 中加载范围属性的最大值吗?

发布于 2024-08-30 09:24:44 字数 741 浏览 11 评论 0原文

我在 CFFORM 中有一个 CFINPUT 标签。我想动态设置范围而不发布页面。我在整个页面中有几个 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}) 的值。

这可能吗?我该怎么做呢?

I have a CFINPUT tag in a CFFORM. I want to set the range dynamically without posting the page. I have several AJAX calls throughout the page to dynamically load form fields on the fly:

<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})" />

In the above CFFORM, I basically want to set the minValue of the range to "1" and the maxValue of the range to the value of cfc:Data.getMaxQty({itemId}).

Is this possible? How can I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

翻身的咸鱼 2024-09-06 09:24:44

快速回答是“不”。但有一个非常简单的解决方法。只需使用绑定将您想要的最大值加载到 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})" />

The quick answer is "No". But there is a very easy workaround. Simply load the value that you want to be the maximum into a CFDIV or a CFINPUT hidden field using binding, then access that value in a JavaScript function that validates the min/max values when you submit the form:

<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})" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文