![](/img/trans.png)
[英]How to disable submit button until form is filled and valid in javascript?
[英]Disable Submit Button Until Form Filled Out JQuery/JavaScript
我有一个包含3个下拉列表和一个输入字段的表单。
我希望显示“提交”按钮,直到所有字段都被填充为止,但是由于填充字段时我的“提交”按钮不会重新启用,因此我似乎无法使其正常工作。
我试图使用的代码是:
的HTML
<div class="row">
<div class="col-sm-12">
<div class="form-group" id="FromClass">
<label class="col-sm-offset-3 col-sm-2 control-label">From</label>
<div class="col-sm-6 col-md-4" id="FromDiv">
<select name="RegCashMove_From_DropDownList" class="form-control" id="RegCashMove_From_DropDownList">
<option value="- - Please select - -">- - Please select - -</option>
<option value="AJBIC">AJBIC</option>
<option value="FSS">FSS</option>
</select>
</div>
</div>
<div class="form-group" id="ToClass">
<label class="col-sm-offset-3 col-sm-2 control-label">To</label>
<div class="col-sm-6 col-md-4" id="ToDiv">
<select name="RegCashMove_To_DropDownList" class="form-control" id="RegCashMove_To_DropDownList">
<option value="- - Please select - -">- - Please select - -</option>
<option value="AJBIC">AJBIC</option>
<option value="FSS">FSS</option>
</select>
</div>
</div>
<div class="form-group" id="AmountClass">
<label class="col-sm-offset-3 col-sm-2 control-label">Amount</label>
<div class="col-sm-6 col-md-4" id="AmountDiv">
<div class="input-group">
<div class="input-group-addon">£</div>
<input name="RegCashMove_Amount_TextBox" class="form-control" id="RegCashMove_Amount_TextBox" onblur="FormatCurrency(this);" type="number" step="any" value="" placeholder="0.00">
</div>
</div>
</div>
<div class="form-group" id="FrequencyClass">
<label class="col-sm-offset-3 col-sm-2 control-label">Frequency</label>
<div class="col-sm-6 col-sm-4" id="FrequencyDiv">
<select name="RegCashMove_Frequency_DropDownList" class="form-control" id="RegCashMove_Frequency_DropDownList">
<option value="0">- - Please select - -</option>
<option value="1">Monthly</option>
<option value="3">Quarterly</option>
<option value="6">Half yearly</option>
<option value="12">Yearly</option>
</select>
</div>
</div>
<div class="form-group pull-right" id="submitAndCancel" style="display: block;">
<div class="col-sm-12">
<button name="RegularCashMovements_Submit_Button" disabled="disabled" class="btn btn-default" id="RegularCashMovements_Submit_Button" type="submit">
<span class="glyphicon glyphicon-ok"></span> Submit
</button>
<button name="RegularCashMovements_Cancel_Button" class="btn btn-default" id="RegularCashMovements_Cancel_Button" type="submit">
<span class="glyphicon glyphicon-remove"></span> Cancel
</button>
</div>
</div>
</div>
</div>
jQuery查询
$(document).ready(function () {
<% if (state == "Initial")
{ %>
$('#RegularCashMovements_Submit_Button').attr('disabled', 'disabled');
function updateFormEnabled()
{
if (verifyAdSettings())
{
$('#RegularCashMovements_Submit_Button').attr('disabled', '');
}
else
{
$('#RegularCashMovements_Submit_Button').attr('disabled', 'disabled');
}
}
function verifyAdSettings()
{
if ($('#RegCashMove_From_DropDownList').val() != '- - Please select - -' && $('#RegCashMove_To_DropDownList').val() != '- - Please select - -' && $('#RegCashMove_Amount_TextBox').val() != '' && $('#RegCashMove_Frequency_DropDownList').val() != '0')
{
return true;
}
else
{
return false
}
}
$('#RegCashMove_From_DropDownList').change(updateFormEnabled);
$('#RegCashMove_To_DropDownList').change(updateFormEnabled);
$('#RegCashMove_Amount_TextBox').change(updateFormEnabled);
$('#RegCashMove_Frequency_DropDownList').change(updateFormEnabled);
<%} %>
});
这是我的小提琴 。
使用removeAttr删除禁用的属性。您可能想知道, disable =“”还会禁用DOM元素。
$(document).ready(function () { var state = "Initial"; if (state == "Initial") { function updateFormEnabled() { if (verifyAdSettings()) { $('#RegularCashMovements_Submit_Button').removeAttr('disabled'); } else { $('#RegularCashMovements_Submit_Button').attr('disabled', 'disabled'); } } function verifyAdSettings() { if ($('#RegCashMove_From_DropDownList').val() != '- - Please select - -' && $('#RegCashMove_To_DropDownList').val() != '- - Please select - -' && $('#RegCashMove_Amount_TextBox').val() != '' && $('#RegCashMove_Frequency_DropDownList').val() != '0') { return true; } else { return false } } $('#form select').change(updateFormEnabled); $('#RegCashMove_Amount_TextBox').change(updateFormEnabled); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="row" id="form"> <div class="col-sm-12"> <div id="RegCashMoveHeading"> <h3>Set up a new regular cash movement</h3> </div> <div class="form-group" id="FromClass"> <label class="col-sm-offset-3 col-sm-2 control-label">From</label> <div class="col-sm-6 col-md-4" id="FromDiv"> <select name="RegCashMove_From_DropDownList" class="form-control" id="RegCashMove_From_DropDownList"> <option value="- - Please select - -">- - Please select - -</option> <option value="AJ Bell Investcentre">AJ Bell Investcentre</option> <option value="Funds and Shares Service">Funds and Shares Service</option> </select> </div> </div> <div class="form-group" id="ToClass"> <label class="col-sm-offset-3 col-sm-2 control-label">To</label> <div class="col-sm-6 col-md-4" id="ToDiv"> <select name="RegCashMove_To_DropDownList" class="form-control" id="RegCashMove_To_DropDownList"> <option value="- - Please select - -">- - Please select - -</option> <option value="AJ Bell Investcentre">AJ Bell Investcentre</option> <option value="Funds and Shares Service">Funds and Shares Service</option> </select> </div> </div> <div class="form-group" id="AmountClass"> <label class="col-sm-offset-3 col-sm-2 control-label">Amount</label> <div class="col-sm-6 col-md-4" id="AmountDiv"> <div class="input-group"> <div class="input-group-addon">£</div> <input name="RegCashMove_Amount_TextBox" class="form-control" id="RegCashMove_Amount_TextBox" onblur="FormatCurrency(this);" type="number" step="any" value="" placeholder="0.00"> </div> </div> </div> <div class="form-group" id="FrequencyClass"> <label class="col-sm-offset-3 col-sm-2 control-label">Frequency</label> <div class="col-sm-6 col-sm-4" id="FrequencyDiv"> <select name="RegCashMove_Frequency_DropDownList" class="form-control" id="RegCashMove_Frequency_DropDownList"> <option value="0">- - Please select - -</option> <option value="1">Monthly</option> <option value="3">Quarterly</option> <option value="6">Half yearly</option> <option value="12">Yearly</option> </select> </div> </div> <div class="form-group pull-right" id="submitAndCancel" style="display: block;"> <div class="col-sm-12"> <button name="RegularCashMovements_Submit_Button" disabled="disabled" class="btn btn-default" id="RegularCashMovements_Submit_Button" type="submit"> <span class="glyphicon glyphicon-ok"></span> Submit </button> <button name="RegularCashMovements_Cancel_Button" class="btn btn-default" id="RegularCashMovements_Cancel_Button" type="submit"> <span class="glyphicon glyphicon-remove"></span> Cancel </button> </div> </div> </div> </div>
只需将代码中的.attr()
更改为.prop()
因为使用.attr将按钮设置回Not Disabled将不起作用,有关stackoverflow的许多问题的更多信息:
-jQuery中prop()和attr()之间的区别以及何时使用attr()和prop()
-.prop()与.attr()
-jQuery attr vs prop?
-.prop()与.attr()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.