【发布时间】:2018-05-15 08:09:20
【问题描述】:
在用户单击导航上名为“订阅”的按钮后,我的标题顶部出现了一个表单。
当用户单击此按钮时,订阅表单会在标题顶部打开。
我正在尝试让用户在填写所有字段之前无法提交表单。
使用我现在编写的代码,当用户单击“订阅”时表单甚至都不会打开 - 没有任何反应。
以前,一切正常,但当没有填写任何内容时,表单仍然会提交。
如何更改我的代码,以便在用户单击订阅按钮时再次打开订阅表单,以及如何获取它以便在所有字段填满之前无法提交表单?
var $subscribe = $('#click-subscribe');
var $subscribeContent = $('#subscribe-content');
var $subscribeClose = $('#subscription-close');
$subscribeContent.hide();
$subscribe.on('click', function(e) {
e.preventDefault();
$subscribeContent.slideToggle();
});
$subscribeClose.on('click', function(e) {
e.preventDefault();
$subscribeContent.slideToggle();
})
var $formSubmit = $('#signup-submit'),
$signupForm = $('.form-show'),
$formReplace = $('#thank-you');
$formReplace.hide();
if (!$formSubmit.valid()) {
return false;
} else {
$formSubmit.on('click', function() {
$signupForm.hide();
$formReplace.show();
})
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="subscribe-content">
<div class="subscription-signup">
<div class="subscription-close" id="subscription-close"></div>
<div class="email-signup">
<p class="cat-title subscription-text">lorem ipsum</p>
<p class="subscription-text">lorem ipsum</p>
<p class="subscription-text">lorem ipsum</p>
<div class="subscription-form">
<form id="signup-form" class="form-show" name="signup-form" method="post" action="${URLUtils.url('Newsletter-SubscribeMobile')}">
<div class="form-row salutation header">
<label for="salutation">Title</label>
<div class="chzn-row valid salutation">
<select id="title" name="title" class="chzn-global-select input-select optional required">
<option value="">--</option>
<option value="Mr">Mr.</option>
<option value="Mrs">Mrs.</option>
<option value="Ms">Ms.</option>
<option value="Miss">Miss</option>
</select>
</div>
</div>
<div class="form-row required">
<label for="firstname">
<span aria-required="true">First Name</span>
<span class="required-indicator">*</span>
</label>
<input class="input-text required" id="firstname" type="text" name="firstname" value="" maxlength="500" autocomplete="off">
</div>
<div class="form-row required">
<label for="lastname">
<span aria-required="true">Surname</span>
<span class="required-indicator">*</span>
</label>
<input class="input-text required" id="lastname" type="text" name="lastname" value="" maxlength="500" autocomplete="off">
</div>
<div class="form-row required">
<label for="signup-email" style="display:none;">Email</label>
<input class="header-signup-email" type="text" id="signup-email-header" name="signup-email" value="" placeholder="Email" />
</div>
<div class="form-row text-center">
<input type="submit" name="signup-submit" id="signup-submit" class="subscribe-submit" value="Submit" />
</div>
</form>
<div id="thank-you">
<p>Thanks for subscribing!</p>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
为什么不使用 jquery 验证
-
我不知道那是什么,我将如何使用它?
-
那不行
-
传递不是作为类而是作为一个属性。
-
请看我为你制作的sn-p。它报告错误。请修复它们 - 例如添加您可能使用的 onsubmit 处理程序
标签: javascript jquery forms form-submit