在选择文件之前禁用 freemarker/spring 表单上的提交按钮

发布于 2024-12-21 13:39:54 字数 1475 浏览 1 评论 0原文

在用户选择文件之前如何禁用提交按钮?

我的页面上有一个表单:

<table>
    <form method="post" enctype="multipart/form-data" id="messageupload">
    <@spring.bind "messageUploadCommand.*"/>
        <tr>
            <td><@spring.formInput 'messageUploadCommand.multipartFile' '' 'file' /></td>
            <td><button type="submit" id="searchButton">Upload</button></td>
            <td><@spring.formSingleSelect 
                    'messageUploadCommand.messageFormat', 
                    messageFormats, '' /> 
                <@spring.showErrors  '<br>', 'error' /> </td>
        </tr>
    </form>
</table>

如果用户在选择文件之前提交表单,我会得到

freemarker.template.TemplateException: Error executing macro: formSingleSelect required parameter: options is not specified. 
 at freemarker.core.Macro$Context.sanityCheck(Macro.java:211) 
 at freemarker.core.Macro$Context.runMacro(Macro.java:169) 
 at freemarker.core.Environment.visit(Environment.java:603) 
 at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) 
 at freemarker.core.Environment.visit(Environment.java:210) 
 at freemarker.core.MixedContent.accept(MixedContent.java:92) 
 at freemarker.core.Environment.visit(Environment.java:210)
 at freemarker.core.Environment.process(Environment.java:190)
 at freemarker.template.Template.process(Template.java:237)
 at ...

How do I disable the submit button until the user has chosen a file?

I have a form on my page:

<table>
    <form method="post" enctype="multipart/form-data" id="messageupload">
    <@spring.bind "messageUploadCommand.*"/>
        <tr>
            <td><@spring.formInput 'messageUploadCommand.multipartFile' '' 'file' /></td>
            <td><button type="submit" id="searchButton">Upload</button></td>
            <td><@spring.formSingleSelect 
                    'messageUploadCommand.messageFormat', 
                    messageFormats, '' /> 
                <@spring.showErrors  '<br>', 'error' /> </td>
        </tr>
    </form>
</table>

If the user submits the form before choosing a file I get

freemarker.template.TemplateException: Error executing macro: formSingleSelect required parameter: options is not specified. 
 at freemarker.core.Macro$Context.sanityCheck(Macro.java:211) 
 at freemarker.core.Macro$Context.runMacro(Macro.java:169) 
 at freemarker.core.Environment.visit(Environment.java:603) 
 at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) 
 at freemarker.core.Environment.visit(Environment.java:210) 
 at freemarker.core.MixedContent.accept(MixedContent.java:92) 
 at freemarker.core.Environment.visit(Environment.java:210)
 at freemarker.core.Environment.process(Environment.java:190)
 at freemarker.template.Template.process(Template.java:237)
 at ...

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

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

发布评论

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

评论(1

°如果伤别离去 2024-12-28 13:39:54

我就是这样做的:

<table>
    <form method="post" enctype="multipart/form-data" id="messageupload">
    <@spring.bind "messageUploadCommand.*"/>
        <tr>
            <#assign onChangeScript = "document.getElementById('uploadButton').disabled = (value.length=0); ">
            <td><@spring.formInput 'messageUploadCommand.multipartFile' 'onchange=\"${onChangeScript}\"' 'file' /></td>
            <td><button type="submit" disabled="true"
                          id="searchButton">Upload</button></td>

            <td><@spring.formSingleSelect 
                    'messageUploadCommand.messageFormat', 
                    messageFormats, '' /> 
                <@spring.showErrors  '<br>', 'error' /> </td>
        </tr>
    </form>
</table>

我通过 Freemarker 变量添加了文件选择器 onchange 脚本,并默认禁用该按钮。 onchange 脚本测试值的长度(即文件名)是否为零。

This is how I did it:

<table>
    <form method="post" enctype="multipart/form-data" id="messageupload">
    <@spring.bind "messageUploadCommand.*"/>
        <tr>
            <#assign onChangeScript = "document.getElementById('uploadButton').disabled = (value.length=0); ">
            <td><@spring.formInput 'messageUploadCommand.multipartFile' 'onchange=\"${onChangeScript}\"' 'file' /></td>
            <td><button type="submit" disabled="true"
                          id="searchButton">Upload</button></td>

            <td><@spring.formSingleSelect 
                    'messageUploadCommand.messageFormat', 
                    messageFormats, '' /> 
                <@spring.showErrors  '<br>', 'error' /> </td>
        </tr>
    </form>
</table>

I added the file-chooser onchange script via a Freemarker variable, and disabled the button by default. The onchange script tests for the length of the value, i.e. the filename, being zero.

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