【问题标题】:Javascript Tapestry Form Submit issueJavascript Tapestry 表单提交问题
【发布时间】:2016-12-12 13:07:16
【问题描述】:

所以我收到了一些 HTML 来上传到我们的网站,本质上它是一个登录表单,但是在浏览器中按下登录按钮时没有任何作用。我看到它使用“javascript:tapestry.form.submit”来使用我认为可能是问题的风格化按钮图像(img src="images/submit.png" alt="submit")提交表单。

当我使用 (input type="submit" value="Login" /) 将此按钮更改为标准按钮时,它工作正常。是否有任何人可以想到为什么此按钮可能导致问题而不是浏览器中的负载?如果您输入您的详细信息并按回车键,则该表单有效。

<div id="loginPanel">
    <div class="text">
        <p class="loginText">Welcome</p>
        <p class="loginText">Log-in to place your order</p>
    </div>
    <form method="post" action="http://coreprint.net/aspire/Login,loginForm.sdirect" id="loginForm">
        <div style="display:none;" id="loginFormhidden">
            <input type="hidden" name="formids" value="If_0,If_2,username,password,loginButton,If_4" />
            <input type="hidden" name="seedids" value="" />
            <input type="hidden" name="submitmode" value="" />
            <input type="hidden" name="submitname" value="" />
            <input type="hidden" name="If_0" value="F" />
            <input type="hidden" name="If_2" value="F" />
            <input type="hidden" name="If_4" value="F" />
            <input type="hidden" name="Hidden" id="Hidden" value="X" />
        </div>

        <table>
            <tr>
                <td>Username</td>
                <td><input type="text" name="username" value="" id="username" size="30" /></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="password" value="" id="password" size="30" /></td>
            </tr>
        </table>

        <a href="javascript:tapestry.form.submit('loginForm', 'loginButton');" id="loginButton" class="bLink"> 
            <img src="images/submit.png" alt="submit">
        </a>
        <input type="submit" style="width:0;height:0;border:0"/>
    </form>
</div>

【问题讨论】:

  • 您是否与 HTML 一起发送了任何 javascript,或者 HTML 中是否有任何脚本标签?如果没有,那么这就是它不起作用的原因。如果有,请发布。
  • 啊,感谢 Alex 这么快就回来了。不,我没有提供任何内容,也没有脚本标签(我认为我应该在元标签中找到它?),我想我可以将 Javascript 文件附加到头部标签中的 HTML,即
  • 最常见的位置是在 标签之间,或者在正文的最底部。如果你能得到原始的 JavaScript 那就太好了,你可以根据你的评论将它与脚本标签一起使用。如果没有,那么我们可以编写一些等效的东西。
  • 嗨,Alex,我想它应该是一个相当简单的脚本,因为它应该只是说在 submit.png 上使用提交,而不是使用输入 type= 创建一个按钮"submit" value="Login" 语法,还是我看错了?
  • 用 javascript 来做会很容易,正如你所说。进一步思考,我认为这不是正确的方法——这纯粹是一个表现问题而不是行为问题,所以 CSS 将是我的首选方式。我添加了一个答案

标签: javascript


【解决方案1】:

从上面的 cmets 开始,我们的真正目标是改变提交按钮的外观,而不是向图像添加提交行为。我们可以用 CSS 做到这一点。

#loginForm > input[type="submit"] {
  width:60px;
  height:60px;

  // transparent background colour
  background-color: rgba(0,0,0,0);

  // allows the background to resize when you change width/height
  background-size:100% 100%;

  // use your submit image
  background-image: url("images/submit.png");

  // remove default button border
  border:none;

  // make a nicy pointy cursor
  cursor:pointer;
}

我已经从 HTML 中删除了锚点和图像,并向提交按钮添加了一个空白值,因此我们的背景图像上不会显示任何文本。

<div id="loginPanel">
    <div class="text">
        <p class="loginText">Welcome</p>
        <p class="loginText">Log-in to place your order</p>
    </div>
    <form method="post" action="http://coreprint.net/aspire/Login,loginForm.sdirect" id="loginForm">
        <div style="display:none;" id="loginFormhidden">
            <input type="hidden" name="formids" value="If_0,If_2,username,password,loginButton,If_4" />
            <input type="hidden" name="seedids" value="" />
            <input type="hidden" name="submitmode" value="" />
            <input type="hidden" name="submitname" value="" />
            <input type="hidden" name="If_0" value="F" />
            <input type="hidden" name="If_2" value="F" />
            <input type="hidden" name="If_4" value="F" />
            <input type="hidden" name="Hidden" id="Hidden" value="X" />
        </div>

        <table>
            <tr>
                <td>Username</td>
                <td><input type="text" name="username" value="" id="username" size="30" /></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="password" value="" id="password" size="30" /></td>
            </tr>
        </table>

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

Working example here

【讨论】:

  • 是的,我认为你是对的,这里实际上不需要 Javascript,正如你所说的重写它以否定这可能是最强大的解决方案。非常感谢您的帮助,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 2011-06-01
  • 2010-10-09
  • 1970-01-01
  • 2021-05-13
  • 2015-07-09
  • 2021-12-14
相关资源
最近更新 更多