【问题标题】:How to disable form submit button if text field value is set to a specific value or blank?如果文本字段值设置为特定值或空白,如何禁用表单提交按钮?
【发布时间】:2013-06-25 02:51:07
【问题描述】:

我使用 Google Docs 创建了一个表单,它将数据发送到 Google 电子表格。我采用了 html 代码并将其重新格式化为我的 css/style 并且它运行良好。它还显示一个自定义的感谢页面,我面临的唯一问题是它不验证数据。

所以,我正在考虑如果用户没有在必填字段中输入任何内容,则禁用提交按钮。或者,您可以建议一种方法来防止提交空白表单?

目前我的表单有 2 个文本字段,和 4 个复选框。我需要两个文本字段,但不需要复选框。文本字段当前使用 html/script 填充/清除

value="Your Email or Phone No."
onfocus="if (this.value=='Your Email or Phone No.') this.value='';"

如果没有输入数据,我需要我的表单禁用提交按钮。

这是我的完整代码:

<script type="text/javascript">var submitted=false;</script>
<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;" onload="if(submitted) {window.location='thankyou.htm';}"></iframe>
<form action="Google_Form_ID_Here_(removed-for-stackoverflow-post)" method="POST" target="hidden_iframe" onsubmit="submitted=true;">
<ol style="padding-left: 0">


<div dir="ltr"><label for="entry_145">Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<label for="itemView.getDomIdToLabel()" aria-label="(Required field)"></label>
</label>
<input type="text" name="entry.145" value="Enter Full Name" id="entry_145" dir="auto" aria-required="true" onfocus="if (this.value=='Enter Full Name') this.value='';">
</div>



<div dir="ltr" ><label for="entry_624">Contact Info &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label for="itemView.getDomIdToLabel()" aria-label="(Required field)"></label>
</label>
<input type="text" name="entry.624" value="Your Email or Phone No." id="entry_624" dir="auto" aria-required="true" onfocus="if (this.value=='Your Email or Phone No.') this.value='';">
</div>


<div align="center">
<div dir="ltr"><label for="entry_755"><br>Checkboxes
</div><br>
<div dir="ltr">Check which of the functions you&#39;ll be attending.</label><br><br>


<table align="center" width="248" height="128" border="0">

  <span>
  <tr>
  <td align="center"><input id="group_418_1" name="entry.418" type="checkbox" value="Event 1"/>
                <label class="vis_hide">Event 1</label></td>
    <td align="center"><input id="group_418_2" name="entry.418" type="checkbox" value="Event 2"/>
                 <label class="vis_hide">Event 2</label></td>
    <td align="center"><input id="group_418_3" name="entry.418" type="checkbox" value="Event 3"/>
                <label class="vis_hide">Event 3</label></td>
    <td align="center"><input id="group_418_4" name="entry.418" type="checkbox" value="Event 4"/>
                <label class="vis_hide">Event 4</label></td>
  </tr>
  </span>
</table>



<input type="hidden" name="draftResponse" value="[]">
<input type="hidden" name="pageHistory" value="0">


<div dir="ltr">
<input type="submit" name="submit" value="Confirm" class="sbutton">
</div></ol></form>

请问有人可以提供这方面的帮助吗?或者建议替代方案以防止空白提交或提供解决方案的链接? 这也可以用一些 jquery 脚本来完成吗?

感谢您的帮助。

编辑:

我试过这个脚本,但也没有用...

<script>
$(function () {
// give the <form> the ID "myform" (or whatever you want) before using this code!
var form = $("#myform");

var input1 = $("#entry_145"); //for name
var input2 = $("#entry_624"); //for contact


form.addEventListener("submit", function (evt) {
if (input1.val() == "" || input2.val() == "") {
evt.preventDefault();
}
}, false);
});
</script>

【问题讨论】:

    标签: javascript jquery html google-forms


    【解决方案1】:

    用还是不用,脏代码

    <script src="http://code.jquery.com/jquery-1.10.1.min.js" ></script>
    <input type="text" class="req" id="name" />
    <input type="text" class="req" id="post" />
    <input type="submit" class="btn" id="button" onClick='alert("hi");' disabled/>
    
    <script>
    $(function (){
    $('.req').change(function(){
        if ($('#name').val() == '' || $('#post').val() == '')
            {
                $('#button').attr('disabled',true);
            }
        else
            {
                $('#button').attr('disabled',false);
            }
    });
    });
    </script>
    

    【讨论】:

    • 这不会阻止用户在输入字段中点击[Enter]
    • 那行不通...我正在考虑将 onsubmit 属性更改为验证,并在完成时更改“=true”。 : 知道改什么部分,不知道怎么改!...:&lt;form action="Google_Form_ID_Here" method="POST" target="hidden_iframe" onsubmit="submitted=true;"&gt;
    • 当然我说过你可以改变它,我没有测试过,:),已经警告过,当时很困
    • 我在此页面上找到了解决方案:w3schools.com/js/js_form_validation.asp ..... 感谢您的帮助!!
    【解决方案2】:

    客户端“验证”有两种方式:

    • 使用 JavaScript 并将 submit 事件侦听器添加到您的 &lt;form&gt; 标记。

    • required 属性添加到您的文本框中:

      <input type="text" required="required" />
      

    但这些不会阻止使用旧浏览器的用户(使用第二个选项时)或精通计算机的人只需手动发送表单。

    您也必须执行服务器端验证


    试试这个change 事件监听器:
    $(function () {
      // give the <form> the ID "myform" (or whatever you want) before using this code!
      var form = $("#myform");
    
      var input1 = $("#my-input1-name");
      var input2 = $("#my-input2-name");
    
    
      form.submit(function (evt) {
        if (input1.val() == "" || input2.val() == "") {
          evt.preventDefault();
        }
      });
    });
    

    【讨论】:

    • 我正在为基于 Google Docs 的表单使用标识符!自定义后不生效。我尝试了几个 jquery 插件进行验证,但它仍然将数据发送到电子表格,没有验证! ....如何添加更改事件侦听器以及添加什么?我的意思是要更改什么以及使用哪些事件侦听器?
    • @user2377276 我添加了一个示例。
    • 那也没有帮助...编辑了问题。 ...另外,change 事件监听器是什么意思?
    • @user2377276 对不起,我把 jQuery 和纯 JavaScript/DOM 的东西混在一起了。代码现已更正。请再试一次。在这种情况下,您实际上不需要changesubmit 应该就足够了。
    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多