我在填写3个字段后启用某个按钮时遇到一些问题。我想在填写所有3个字段后启用“提交”按钮。它在页面加载时被成功禁用,但在填写字段后不会被启用。感谢您提前提供的任何帮助!
<div class="contact-form">
<form id="contact-form" method="post" action="contact-form-handler.php">
<input name="companyname" type="text" id="companyName" placeholder=" Company Name">
<br>
<input name="name" type="text" id="contactName" placeholder=" Contact Person">
<br>
<input name="email" type="email" id="Email" placeholder=" Your Email">
<br>
<input type="tel" id="Phone" name="Phone" placeholder=" Phone Number">
<br>
<textarea name="message" class='form-control' placeholder=" Write your message here..." style="white-space:pre-wrap; height:200px;width:500px;" row="4"></textarea>
<br>
<button type="submit" name="form[Submit]" id="Submit" class="rsform-submit-button" onClick="alert('Form submitted');">SEND MESSAGE</button>
</form>
</div>
<script>
function myFunction() {
alert("Your message has been sent!");
}
jQuery("#Submit").prop('disabled', true);
var toValidate = jQuery('#companyName, #Email, #contactName'),
valid = false;
toValidate.keyup(function () {
if (jQuery(this).val().length > 0) {
jQuery(this).data('valid', true);
} else {
jQuery(this).data('valid', false);
}
toValidate.each(function () {
if (jQuery(this).data('valid') == true) {
valid = true;
} else {
valid = false;
}
});
if (valid === true) {
jQuery("#Submit").prop('disabled', false);
} else {
jQuery("#Submit").prop('disabled', true);
}
});
</script>
<br>
<input type="tel" id="Phone" name="Phone" placeholder=" Phone Number">
<br>
<textarea name="message" class='form-control' placeholder=" Write your message here..." style="white-space:pre-wrap; height:200px;width:500px;" row="4"></textarea>
<br>
<button type="submit" name="form[Submit]" id="Submit" class="rsform-submit-button" onClick="alert('Form submitted');">SEND MESSAGE</button>
</form>
</div>
<script>
function myFunction() {
alert("Your message has been sent!");
}
jQuery("#Submit").prop('disabled', true);
var toValidate = jQuery('#companyName, #Email, #contactName'),
valid = false;
toValidate.keyup(function () {
if (jQuery(this).val().length > 0) {
jQuery(this).data('valid', true);
} else {
jQuery(this).data('valid', false);
}
toValidate.each(function () {
if (jQuery(this).data('valid') == true) {
valid = true;
} else {
valid = false;
}
});
if (valid === true) {
jQuery("#Submit").prop('disabled', false);
} else {
jQuery("#Submit").prop('disabled', true);
}
});
</script>
3条答案
按热度按时间rsl1atfo1#
请尝试以下代码:
agxfikkp2#
主要的问题是你实际上只检查了列表中的最后一个元素,每次循环,你都给
valid
一个新的值,所以如果最后一个有效,你就认为整个检查有效,而不管之前检查的状态如何。为了克服这个问题,如果我们之前在这个迭代器中给了
valid
一个值,那么应该检查它的当前值。DEMO
w7t8yxp53#
这个答案适用于span或div内的输入。
超文本标记语言
Javascript语言